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