淺析JavaScript中的對(duì)象類型Object

字號(hào):


    盡管JavaScript的擁躉一再?gòu)?qiáng)調(diào)js的面相對(duì)象,然而,或許只有在名為Object的這一類型中才能勉強(qiáng)理解出-- well...下面就讓我們一起來(lái)淺析JavaScript中的對(duì)象類型Object
    ECMAScript中的對(duì)象其實(shí)就是一組數(shù)據(jù)和功能的集合。
    ECMAScript中Object是所有對(duì)象的基礎(chǔ)。
    理解:Object類型是所有它的實(shí)例的基礎(chǔ),換句話說(shuō),Object類型所具有的任何屬性和方法也同樣存在于更具體的對(duì)象中。
    Object的實(shí)例都具有以下屬性和方法
    1.Constructor:保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)
    2.hasOwnProperty(propertyName):用于檢查給定的屬性在當(dāng)前對(duì)象實(shí)例中(而不是原型中)是否存在。其中作為參數(shù)的屬性名必須以字符串指定
    3.isPrototypeOf(object):用于檢查傳入的對(duì)象是否是另一個(gè)對(duì)象的原型
    4.toLocalString():返回對(duì)象的字符串表示,該字符串與執(zhí)行環(huán)境相對(duì)應(yīng)
    5.toString():返回對(duì)象的字符串表示
    6.valueOf():返回對(duì)象的字符串、數(shù)字或布爾值表示。通常與toString()方法的返回值相同
    全局對(duì)象
    全局對(duì)象在JavaScript中有著重要的用途: 全局對(duì)象的屬性是全局定義的符號(hào), JavaScript程序可以直接使用,當(dāng)解釋器啟動(dòng)時(shí),它將創(chuàng)建一個(gè)新的全局對(duì)象,并給它一組定義的初始屬性:
    全局屬性,比如undefined, Infinity
    全局函數(shù),比如parseInt()
    構(gòu)造函數(shù),比如Data(),
    全局對(duì)象,比如Math和JSON
    包裝對(duì)象
    看這樣一個(gè)例子:
    var s = "hello world!";
    var word = s.substring(s.indexOf(" ")+1, s.length);
    字符串既然不是對(duì)象,為什么它會(huì)有屬性呢?只要引用了字符串s的屬性,JavaScript就會(huì)將字符串值通過(guò)調(diào)用new String(s)的方式轉(zhuǎn)換成對(duì)象,
    同字符串一樣,數(shù)字和布爾值也有相應(yīng)的方法。其他類似的包裝類:
    Number object
    String object
    Boolean Object
    Function Object
    RegExp Object
    Error
    SyntaxError
    ReferenceError
    TypeError
    …
    不可變的原始值和可變的原始對(duì)象引用
    原始值是不可改變的,原始值的比較是值比較, 對(duì)象的比較并非值比較:即使兩個(gè)對(duì)象包含同樣的屬性以及相同的值,他們也不是相等的。我們通常將對(duì)象稱為引用類型,對(duì)象的值都是引用,對(duì)象的比較也是引用的比較,當(dāng)且僅當(dāng)他們引用同一個(gè)基獨(dú)享,他們才相等