檢查物件上的某個屬性是否存在可以通過運算子in、方法hasownpreperty()、propertyisenumerable()以及簡單的比較(屬性的值和undefined比較【!==】)來實現。但細節上有差別。
1. in
var point = object.create(, ,
y: });// in
console.log("x" in point); //return true
console.log("type" in point); //return true
原理:
如果物件的自有屬性或繼承屬性包含這個屬性,返回true。
2. hasownproperty()
// point 如上定義
//hasownproperty()
console.log(point.hasownproperty("x")); //true
console.log(point.hasownproperty("type")); //false
原理:
如果物件的自有屬性含有該屬性才返回true。
3. propertyisenumerable()
var point = object.create(, ,
y: ,
z: });//propertyisenumerable()
console.log(point.propertyisenumerable("x")); //true
console.log(point.propertyisenumerable("z")); //false
console.log(point.propertyisenumerable("type")); //false
原理:
hasownproperty()的增強版,如果物件的自有屬性含有該屬性且可列舉才返回true。
4. !==
通過查詢屬性的值與undefined進行比較,可以判斷是否存在某屬性。
有缺陷:1.不區分自有屬性和繼承屬性;2.無法區分有該屬性,但是值為undefined。
//1==
var point2=
console.log(point.name!==undefined); //false
console.log(point.x!==undefined); //true
console.log(point.type!==undefined); //true
console.log(point2.name!==undefined); //false
可以通過點(.)或方括號()運算子來獲取屬性的值。
var book =
}var author = book.author;//獲取book的「author」屬性
var name = author.surname;//獲取book的「surname」屬性
var title=book["main title"];//獲取book的「main title」屬性
設定屬性的值,和查詢寫法一樣,只不過是將其放在賦值表示式的左側
var book =
}book.edition=6 ;//為book新增「edition」屬性
book["main title"]="ecmscript";//設定book的「main title」屬性
通過運算子delete進行刪除。
delete book.edition;
原理:
該運算子只能刪除自有屬性(own properies)而無法刪除繼承屬性(inherited properies)(如果要刪除繼承屬性,必須從原型物件上進行刪除但這會影響到從該原型繼承的物件 )。
delete只是斷開屬性與宿主物件的關係,而不會去操作屬性中的屬性(這可能將造成記憶體洩漏)。
delete不能刪除可配置性為false的屬性。
當delete表示式刪除成功或沒有任何***(比如刪除不存在的屬性)時,它返回true。
列舉屬性的關鍵為獲取所有的鍵值。
列舉屬性的3種方法:
for/in
object.keys()
object.getownpropertynames()
1. for/in
for/in 將物件的可列舉屬性名(包括自有和繼承屬性)賦值給迴圈變數,在迴圈體中遍歷所有可列舉的屬性。
2.object.keys()
返回乙個陣列,陣列中為物件的可列舉的自有屬性的名稱組成。
3.object.getownpropertynames()
返回乙個陣列,陣列中為物件的自有屬性的名稱組成。
var point = object.create(, ,
y: ,
z: ,
});//for in
console.log("for in ......");
for (var item in point)
var keys = object.keys(point);
console.log("keys......");
keys.foreach((item) => );
var ownkeys = object.getownpropertynames(point);
console.log("getownpropertynames() ......");
ownkeys.foreach((item) => );
js物件4 物件的操作
使用typeof 方法 function isobject test else 原理 該方法傳入乙個變數,返回該變數型別所對應的字串 string number boolean undefined object null object function 對於null 陣列和物件,一律返回 objec...
物件導向(一) 物件屬性
物件屬性型別 每個物件都是基於乙個引用型別建立的 1.資料屬性 2.訪問器屬性 4個特性 1.configurable 能否delete屬性從而重新定義屬性 能否修改屬性的特性 能否把屬性改為訪問器屬性 2.enumerable 能否用for in迴圈返回屬性 3.writable 能否修改屬性的值...
物件導向(一) 物件屬性
物件屬性型別 每個物件都是基於乙個引用型別建立的 1.資料屬性 2.訪問器屬性 4個特性 1.configurable 能否delete屬性從而重新定義屬性 能否修改屬性的特性 能否把屬性改為訪問器屬性 2.enumerable 能否用for in迴圈返回屬性 3.writable 能否修改屬性的值...