▌創建物件:{} & Object.create()
- 括號創建: { }
- 函式創建: Object.create()
- Object.create(null) //真的空(連toString都沒有的)
Object.create(object.prototype) //就是「空物件」,會繼承object.prototype的物件
var o={name:"Joe",age:12}
var o=Object.create({name:"Joe",age:12})
var a=Object.create(null) //完全的null
var b=Object.create(Object.prototype) //像是{}的物件
▌查找與設定:點查詢&字串查詢& Object.defineProperty
- 點查詢:像是o.name
字串查詢:像是a[“name”] ,該用法的好處在於可以用for迴圈
var o={}
for(var i=1;i<10;i++){
o["room"+i]="編號"+i
}
console.log(o.room3)
Object.defineProperty():它可以同時設定特性的屬性writable、enumerable、configurable
Object.defineProperty(o,"x",{value:"neo",writable:false})
▌刪除特性:delete
- 刪除(delete):可以刪除特性Property,如果刪除成功會回傳true
- 刪除只能刪除自有特性,不能刪除繼承特性,但是仍會回傳true
var book={
author:"Neo",
age:12
};
delete book.author;
console.log(book.author) //undefined
▌查詢特性:in & hasOwnProperty()
- 特性 in 物件:有的會回傳true
- 物件.hasOwnProperty:有的會回傳true
var o ={x:1}
console.log("x" in o) //true
console.log(o.hasOwnProperty("x")) //true
▌列舉特性
- 透過for in 遍歷特性(但是只會遍歷自有屬性,而不會遍歷繼承屬性)
var book={
author:"neo",
age:12
}
for (p in book){
console.log(p)
}
// author , age
沒有留言:
張貼留言