2019年1月17日 星期四

【Ch6物件】 屬性創建/刪除/查詢/列舉 Object.create() & Object.defineProperty()&delete& in & hasOwnProperty()


▌創建物件:{} & 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

沒有留言:

張貼留言