在 ECMAScript 中,所有對象并非同等創(chuàng)建的。
一般來說,可以創(chuàng)建并使用的對象有三種:本地對象、內(nèi)置對象和宿主對象,對象還包含兩類屬性:自有屬性、繼承屬性。

JavaScript對象
一、JavaScript三大對象
1.本地對象
- 與宿主無關(guān),獨立于宿主環(huán)境的
ECMAScript實現(xiàn)提供的對象。- 簡單來說,本地對象就是
ECMA-262定義的類(引用類型)。- 這些引用類型在運行過程中需要通過
new來創(chuàng)建所需的實例對象。
本地對象包括:
- 常見引用類型:
Object、Function、Array、Date、RegExp -
基本包裝類型:
String、Boolean、Number -
其他類型:
Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError等
有關(guān)引用類型更詳細的用法可參考《【JS基礎(chǔ)】JavaScript引用類型》
有關(guān)基本包裝類型更詳細的用法可參考《【JS基礎(chǔ)】JavaScript引用類型之基本包裝類型》
2.內(nèi)置對象
- 與宿主無關(guān),獨立于宿主環(huán)境的
ECMAScript實現(xiàn)提供的對象,在ECMAScript程序開始執(zhí)行時出現(xiàn)。- 在
ECMAScript程序開始執(zhí)行前就存在,本身就是實例化內(nèi)置對象,開發(fā)者無需再去實例化。- 內(nèi)置對象是本地對象的子集。
- 包含:
Global和Math。ECMAScript5中增添了JSON這個存在于全局的內(nèi)置對象。
有關(guān)內(nèi)置對象屬性與方法的用法可參考《【JS基礎(chǔ)】JavaScript內(nèi)置對象》
3.宿主對象
- 由
ECMAScript實現(xiàn)的宿主環(huán)境提供的對象,包含兩大類,一個是宿主提供,一個是自定義類對象。- 所有非本地對象都屬于宿主對象。
- 對于嵌入到網(wǎng)頁中的
JS來說,其宿主對象就是瀏覽器提供的對象,瀏覽器對象有很多,如Window和Document等。- 所有的
DOM和BOM對象都屬于宿主對象。
(1)宿主提供的對象
指JavaScript運行環(huán)境(即瀏覽器)提供的對象,由瀏覽器廠家自定義提供實現(xiàn),早期存在較大的兼容性問題,當前其中一些主要的對象已經(jīng)被大部分瀏覽器兼容;具體分為如下兩大類:
-
BOM對象:
Window、Navigator、Screen、History、Location -
DOM對象:
Document、Anchor、Area、Base、Body、Button、Canvas、Event、Frame、Frameset、IFrame、Image、Link、Meta、Style、Form、Input Button、Input CheckBox、Input File、Input Hidden、Input Password、Input Radio、Input Reset、Input Submit、InputText、Option、Select、Textare、Table、TableCell、TableRow
(2)自定義對象
指由運行中的`JavaScript``代碼創(chuàng)建的對象,兼容性問題需要由編寫者注意。
創(chuàng)建自定義對象:
a、對象直接量;由名/值對組成的映射表,名和值之間用冒號分隔,名/值對之間用逗號分隔
var obj1 = {};
var obj2 = {x:0,y:0};
var obj3 = {name:"Mary", age:18};
b、使用 new 操作符后跟構(gòu)造函數(shù);創(chuàng)建系統(tǒng)對象,創(chuàng)建通用對象,創(chuàng)建自定義對象(自定義構(gòu)造函數(shù))
var obj1 = new Array;
var obj2 = new Date();
c、function 對象模板
二、JavaScript對象的兩類屬性
對象中的屬性,根據(jù)是否自身的可分為自有屬性和繼承屬性。
1.自有屬性:也可叫實例屬性;指對象自身的屬性,也就是直接在對象中定義的屬性。
2.繼承屬性:也可叫原型屬性;指對象從原型中繼承的屬性,也就是在對象的原型對象中定義的屬性。