JavaScript string對象、Number對象、Date對象、正則對象、JSON對象

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章