1. 程式人生 > 其它 >獲取物件屬性的三種方式【for in | Object.getOwnPropertyNames | Object.keys】

獲取物件屬性的三種方式【for in | Object.getOwnPropertyNames | Object.keys】

技術標籤:jsjs

朋友們好 啊~
先簡單介紹一下兩個方法
1、Object.create(param1)
以param1為原型建立一個空物件,即創建出來的物件的原型為param1
詳情參考 Object.create
2、Object.defineProperty(obj, key, handler)
通過handler物件操作obj物件上的key屬性
詳情參考 Object.defineProperty

建立一個物件

let obj = Object.create({a:1})
obj.b = 2
Object.defineProperty(obj,"c",{
    value:
3 })

在這裡插入圖片描述
建立的obj上有三個屬性如上,根據新增屬性的方式,三個屬性有如下特點

  • a:為原型鏈上的屬性,非自身屬性,可列舉
  • b:自身屬性,可列舉
  • c:為自身屬性,不可列舉

獲取物件身上的屬性

console.log("--------------------1--------------------");
for(let i in obj){              //獲取自身與原型上的可列舉屬性
    console.log(i)   //a,b
}

console.log("--------------------2---------------------"
); let xxx = Object.getOwnPropertyNames(obj) //獲取自身所有屬性 console.log(xxx); //[b,c] console.log("--------------------3---------------------"); let yyy = Object.keys(obj) //獲取自身可列舉屬性 console.log(yyy); //[b] console.log("--------------------4--------------------"); for
(let i in obj){ obj.hasOwnProperty(i) && console.log(i) //是否是 自身可列舉屬性 //b }

通過以上四種方法(第四種為判斷)得到的結果如下
在這裡插入圖片描述
由此可以簡單總結為:

  • for in:獲取自身與原型鏈上的可列舉屬性
  • Object.getOwnPropertyNames: 獲取自身所有屬性
  • Object.keys:獲取自身可列舉屬性
  • hasOwnProperty:判斷是否是自身可列舉屬性

謝謝朋友們~