天天看點

第 2 章 基本概念------------(3)

2.4.6 String類型

         String類型用于表示由零或多個16位Unicode字元組成的字元序列,即字元串。字元串可以由雙引号(")或單引号(')表示。與PHP中的雙引号和單引号會影響對字元串的解釋方式不同,ECMAScript中的這兩種文法形式沒有什麼差別。用雙引号表示的字元串和用單引号表示的字元串完全相同。

         1.字元字面量

         String資料類型包含一些特殊的字元字面量,也叫轉義序列,用于表示非列印字元,或者具有其他用途的字元。這些字元字面量如下所示:

第 2 章 基本概念------------(3)

         任何字元串的長度都可以通過通路其length屬性取得。

         2.字元串的特點

         ECMAScript中的字元串是不可改變的,也就是說,字元串一旦建立,它們的值就不能改變。要改變某個變量儲存的字元串,首先要銷毀原來的字元串,然後再用另一個包含新值的字元串填充該變量。

         3.轉換為字元串

         要把一個值轉換為一個字元串有兩種方式。第一種是使用幾乎每個值都有的toString()方法。這個方法唯一要做的就是傳回相應值的字元串表現。如下所示:         

var  age=11;
         var  ageAsString=age.toString();                         //字元串"11"
         var  found=true;
         var  foundAsString=found.toString();                 //字元串"true"      

         數值、布爾值、對象和字元串值(每個字元串都有一個toString()方法,該方法傳回字元串的一個副本)都有toString()方法。但null和undefined值沒有這個方法。

         多數情況下,調用toString()方法不必傳遞參數。但是,調用數值的toString()方法時,可以傳遞一個參數:輸出數值的基數。預設情況下,toString()方法以十進制格式傳回數值的字元串表示。而通過傳遞基數,toString()可以輸出以二進制、八進制、十六進制,乃至其他任意有效進制格式表示的字元串值。通過指定基數,如下所示:      

var num = 10;
         alert(num.toString());             // "10"
         alert(num.toString(2));           // "1010"
         alert(num.toString(8));           //"12"
         alert(num.toString(10));         // "10"
         alert(num.toString(16));         // "a"      

         在不知道要轉換的值是不是null或undefined的情況下,還可以使用轉型函數String(),這個函數能夠将任何類型的值轉換為字元串。String()函數遵循下列轉換規則:

n  如果值有toString()方法,則調用該方法(沒有參數)并傳回相應的結果;

n  如果值是null,則傳回"null";

n  如果值是undefined,則傳回"undefined"

         下面給出幾個例子:

var  value1 = 10;
         var  value2 = true;
         var  value3 = null;
         var  value4;
         alert(String(value1));               //"10"
         alert(String(value2));                 // "true"
         alert(String(value3));               // "null"
         alert(String(value4));               // "undefined"      

         數值和布爾值的轉換結果與調用toString()方法得到的結果相同。因為null和undefined沒有toString()方法,是以String()函數就傳回這兩個值的字面量。要把某個值轉換為字元串,可以使用加号(+)把它與一個字元串("")加在一起。

2.4.7 Object類型

         ECMAScript中的對象其實就是一組資料和功能的集合。對象可以通過執行new操作符後更要建立的隊形類型的名稱來建立。而建立Object類型的執行個體并為其添加屬性和方法,就可以建立自定義對象:var o=new Object();

         僅僅建立Obect的執行個體并沒有什麼用處,但關鍵是要了解一個重要思想:在ECMAScript中,Object類型是所有它的執行個體的基礎。換句話說,Object類型所具有的任何屬性和方法也同樣存在于更具體的對象中。

         Object的每個執行個體都具有下列屬性和方法:

1  constructor:儲存着用于建立目前對象的函數。對于前面的例子而言,構造函數(constructor)就是Object()。

2  hasOwnProperty(propertyName):用于檢查給定的屬性在目前對象執行個體中(而不是在執行個體的原型中)是否存在。其中,作為參數的屬性名(propertyName)必須以     字元串形式指定。例如:o.hasOwnProperty("name")

3  isPrototypeOf(object):用于檢查傳入的對象是否是傳入對象的原型。

4  propertyIsEnumerable(propertyName):用于檢查給定的屬性是否能夠使用for-in語句來枚舉。與hasOwnProperty()方法一樣,作為參數的屬性名必須以字元      串形式指定。

5  toLocaleString():傳回對象的字元串表示,該字元串與執行環境的地區對應。

6  toString():傳回對象的字元串表示。