1.string对象
(1)String.fromCharCode()
参数为一个或数值,代表Unicode码点,返回值是这些码点组成的字符串。该方法不支持Unicode码点大于0xFFFF的字符,即十进制的65535.
String.formCharCode(); //""
String.fromCharCode(97); //"a"
string.formCharCode(104,101,101,108,111); //"hello"
(2)charAt(下标):返回指定位置的字符 ,若参数为负数,或大于等于字符串的长度,charAt
返回空字符串。
(3)charCodeAt()
参数若为空,则返回字符串中第一个字符的Unicode码点,否则返回指定位置的码点,若为负数或大于字符串中字符个数,则返回NaN.
("abc").charCodeAt(); //97
("abc").charCodeAt(1); //98
("abc").charCodeAt(-1); //NaN
("abc").charCodeAt(4); //NaN
(4)concat():用于连接字符串,返回组成的字符串,原字符串不变。
//例1
var str1 = "aaa";
var str2 = "bbb";
str1.concat(str2); //"aaabbb"
str1 //"aaa"
//例2
'a'.concat('b','c'); //"abc"
//例3
var one = 1;
var two = 2;
var three = '3';
"".concat(one,two,three); //"123"
one + two + three ; //"33"
(5)slice(起始位置(必需),结束位置(可无)):从原字符串取出字符串并返回,不改变原字符串。若起始位置大于结束位置,则返回空字符串。
"javaScript".slice(0,4); //"java"
"javaScript".slice(4); //"Script"
"javaScript".slice(2,1); //""
(6)substring(起始位置(必需),结束位置(可无)):该方法用于从字符串中取出子字符串并返回,不改变原字符串,与 slice() 方法相似.但是,当起始位置大于结束位置,则substring()会自动更换这两个位置。若是参数为负数,则自动转化为0,建议优先使用 slice()。
"javaScript".substring(0,4); //"java"
"javaScript".substring(4); //"Script"
"javaScript".substring(10,4); ==> "javaScript".substring(4,10); //"Script"
"javaScript".substring(-1); //"javaScript"
"javaScript".substring(4,-1); ==> "javaScript".substring(0,4); //"java"
(7)substr():用法与 substring() 相同.
(8)indexOf(),lastIndexOf()
(9)trim():去除字符串两端的空格,制表符(\t
、\v
)、换行符(\n)和回车符(\r),返回新字符串,不改变原字符串。
(10)toLowerCase(),toUpperCase()
(11)match():用于匹配原字符串中是否包含某个字符串,若包含,则把该字符串当成数组返回,否则返回 null.
"cat,bat,sat,fat".match("at"); //["at"]
"cat,bat,sat,fat".match("xt"); //null
返回的数组还有 index 和 input 属性,分别表示匹配字符串开始的位置和原始字符串
"cat,bat,sat,fat".match("at"); //["at"]
matches.index // 1
metches.input // "cat,bat,sat,fat"
(12)search(),replace():search() 与 match() 用法相同,但是search() 返回值为匹配的第一个位置,若没有找到,则返回 -1
"cat, bat, sat, fat".search("at") // 1
"cat, bat, sat, fat".search("xt") // -1
replace() 用于替换子字符串,一般情况下,只替换符合条件的第一个字符。
"aaa".replace('a', 'b') // "baa"
(13)split():分割字符串,并把分割后的字符串当成数组返回。可接受第二个参数,第二个参数为返回的数组的长度。
(14)localeCompare():用于比较两个字符串,若返回 -1 ,则表示第二个字符串比第一个字符串大,若返回0,则表示相等,若返回1 ,则表示第一个字符串大于第二个字符串。
localeCompare() 还可以接受第二个参数,用来指定使用的语言。
2.Number对象
(1)toFixed():将一个数转化为指定位数的小数,返回这个小数对应的字符串。toFixed()
方法的参数为小数位数,有效范围为0到100,超出这个范围将抛出 RangeError 错误。
(2)toExponential():将一个数转化为科学计数法形式。参数是小数点后有效数字的位数,范围为0到100,超出这个范围,会抛出一个 RangeError 错误。
(3)toPrecision():将一个数转为指定位数的有效数字。参数为有效数字的位数,范围是1到100,超出这个范围会抛出 RangeError 错误。
3.Date对象
(1)toDateString() :返回日期字符串,不含小时、分、秒
(2)toTimeString():返回时间字符串,不含年月日
4.(RegExp)正则对象
(1)exec():用来返回匹配结果,如果发现匹配,就返回一个数组,成员是匹配成功的子字符串,否则返回 null。
var s = "_x_x";
var r1 = /x/;
var r2 = /y/;
r1.exec(s); //["x"]
r2.exec(s); //null
若正则表达式包含圆括号(组匹配),则返回的数组会包含多个成员,第一个成员是整个匹配的结果,后面的成员就是圆括号对应的匹配成功的组。也就是第二个成员对应第一个括号,第三个成员对应第二个括号,以此类推。
var s = "_x_x";
var r = /_(x)/;
r.exec(s); //["_x","x"]
input属性:真个原字符串
index属性:模式匹配成功的开始位置(从0开始)
var r = /a(b+)a/;
var arr = r.exec("_abbba_aba");
arr //["abbba","bbb"]
arr.index //1
arr.input // "_abbba_aba"
5.JSON对象
(1)JSON.stringify():将一个值转换为 JSON 格式,并且可以被 JSON.parse() 还原。
JSON.stringify(false); "false"
JSON.stringify("false") ; "\"false\"" 这是因为将来还原的时候,内层双引号可以让引擎知道这是一个字符串,而不是其他类型
如果对象的属性是 undefined,函数或 XML 对象,则该属性会被JSON.stringify()忽略
var obj = {
a:undefined,
b:function(){}
}
JSON.stringify(obj); //"{}"
如果数组的成员是undefined,函数或 XML 对象,则会被JSON.stringify()转换成 null
var arr = [undefined,function];
JSON.stringify(arr); //"[null,null]"
正则对象会被转换成空对象
JSON.stringify(/foo/); //"{}"
JSON.stringify()会忽略对象不可遍历的属性
var obj = {};
Object.defineProperties(obj,{
"foo":{
value:1,
enumerable:true
},
"bar":{
value:2,
enumerable:false
}
});
JSON.stringify(obj); //"{"foo":1}"
JSON.stringify()的第二个参数用来指定需要转换成字符串的属性(第二个参数对数组无效)
var obj = {
'a':111,
'b':222,
'c':333
};
var selectedProperties = ['a','b'];
JSON.stringify(obj,selectedProperties); //"{"a":1,"b":2}"
第二个参数还可以是一个函数,用来更改 JSON.stringify()的值,这个函数是递归处理所有的键,若函数返回 undefined或不返回值,则该属性会被忽略
function f(key,value){ //key和value 分别为对象的键和值
if(typeof === "number"){
return value*2;
}
}
JSON.stringify({a:1,b:2},f); //'{"a":2,"b":4}'
第三个参数用于增加返回的字符串的可读性,若参数为数字,则在每个属性前面添加空格(空格数<=10),若是字符串,在在每个属性前面添加此字符串(字符<=10)
//例1
JSON.stringify({a:1,b:2},null,2);
/*
"{
"a":1,
"b":2
}"
*/
//例2
JSON.stringify({a:1,b:2},null,"|-");
/*
"{
|-"a":1,
|-"b":2
}"
*/
参数对象如果有自定义 toJSON() 方法,那么JSON.stringify() 会使用自定义的toJSON() 方法的返回值。
//例1
var user = {
firstName:"三",
lastName:"张",
get fullName(){
return this.lastName + this.firstName;
}
}
JSON.stringify(user);
//"{"firstName":"三","lastName":"张","fullName":"张三"}"
//例2
var user = {
firstName:"三",
lastName:"张",
get fullName(){
return this.lastName + this.firstName;
},
toJSON: function(){
return {
name:this.lastName + this.firstName;
};
}
}
//JSON.stringify(user);
//"{"name":"张三"}"
toJSON() 方法的另一个应用是将正则表达式转换为字符串,因为 JSON.stringify() 默认不能转换正则对象
//例1 没使用 toJSON() 方法前
var obj = {
reg = /foo/;
}
JSON.stringify(obj); //"{"reg":{}}"
//例2 使用toJSON() 方法之后
RegExp.prototype.toJSON = RegExp.prototype.toString;
JSON.stringify(/foo/); //""/foo/""
(2)JSON.parse():将 JSON 字符串转换成对应的值