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 字符串轉換成對應的值