理解JavaScript對象


理解JavaScript對象

對象是JavaScript的基本數據類型。對象是一種復合值:將很多值(原始值或者其他對象)聚合在一起。

JavaScript對象不僅可以保持自有的屬性,還可以從原型對象繼承屬性。對象的方法通常是繼承的屬性。原型式繼承是JavaScript的核心特征。

JavaScript對象是動態的——可以新增屬性也可以刪除屬性,除了字符串,數字,true,false,null和undefined之外(當使用他們的屬性方法時,會隱式的變成包裝對象),JavaScript中的值都是對象。

對象是可變的,我們通過引用而非值來操作對象,如果變量x是指向一個對象的引用,那么執行代碼var y=x;變量y也是指向同一個對象的引用,而非這個對象的副本,通過變量y修改這個對象亦會對變量x造成影響。

JavaScript規定,如果行首是大括號,一律解釋為語句(即代碼塊)。如果要解釋為表達式(即對象),必須在大括號前加上圓括號。

對象的最常見的用法是:

創建(create),設置(set),查找(query),刪除(delete),檢測(test),枚舉(enumerate)它的屬性。

1.對象創建:

對象的生成方法,通常有三種方法。除了像上面那樣直接使用大括號生成({}),還可以用new命令生成一個Object對象的實例,或者使用Object.create方法生成。

第一種:對象直接量
var point={x:0,y:0;}

第二種:通過new后面加上構造函數創建對象
var o=new Object();

第三種:通過Object.create方法生成
var o=Object.create(null);//這個方法可以傳入原型對象

總結:一般來說,第一種采用大括號的寫法比較簡潔,第二種采用構造函數的寫法清晰地表示了意圖,第三種寫法一般用在需要對象繼承的場合。

2.對象屬性的設置與查詢

查詢
o.x或者o["x"]

設置
o.x=2或者o["x"]=2

3.屬性的刪除

delete o.x
delete只能刪除自由屬性,不能刪除繼承屬性

4.屬性的檢測

javascript對象可以看作屬性的集合,我們經常會檢測集合中成員的所屬關系,判斷某個屬性是否存在於某個對象中。

(1)in運算符

運算符左側是屬性名,右側是對象。如果對象的自有屬性或繼承屬性中包含這個屬性則返回true。
"x" in o

(2)hasOwnProperty()

用於檢測給定的名字是否是對象的自有屬性。對於繼承屬性它將返回false。
o.hasOwnProperty("x")

(3)propertyIsEnumerable()

propertyIsEnumerable()是hasOwnProperty()的加強版,只有檢測到是自有屬性且這個屬性的可枚舉性為true時它才返回true
o.propertyIsEnumerable("x")

5.屬性枚舉

通過使用for/in循環可以在循環體中遍歷對象中所有可枚舉的屬性(包括自由屬性和繼承的屬性)。對象繼承的內置方法不可枚舉,但是代碼中給對象添加的屬性都是可枚舉的。

示例:遍歷對象的所有可枚舉屬性
for(property in o){

}

示例:遍歷對象的自有屬性
for(property in o){
    if(!o.hasOwnProperty(property)) continue; //跳過繼承的屬性
    console.log(property);//輸出自有屬性
} 

示例:跳過方法
for(property in o){
    if(typeof o[property] === "function") continue; //跳過方法
}   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM