1. 程式人生 > 程式設計 >JS物件屬性的檢測與獲取操作例項分析

JS物件屬性的檢測與獲取操作例項分析

本文例項講述了JS物件屬性的檢測與獲取操作。分享給大家供大家參考,具體如下:

1.1 in運算子

in運算子用於檢查物件是否包含某個屬性(注意,檢查的是鍵名,不是鍵值), 如果包含就返回true,否則返回false

var obj = { p: 1 }
'p' in obj // true
'toString' in obj // true

上面程式碼中,obj物件上有一個p屬性,所以使用in運算子時,得到true,但toString並沒有在obj物件上,為什麼也返回true呢,這是因為in運算子,不能識別哪些屬性是物件自身的,哪些是繼承的。因為toString是繼承自obj的原型物件,所以會返回true。

1.2 for … in 迴圈

for … in 迴圈用來遍歷一個物件的全部屬性。

var obj = {a: 1,b: 2,c: 3};

for (var i in obj) {
 console.log(obj[i]);
}

for … in 迴圈有兩個使用注意點

  1. 它遍歷的是物件所有可遍歷的屬性,會跳過不可遍歷的屬性。
  2. 它不僅遍歷物件自身的屬性,還遍歷繼承的屬性。

如果想得到自身的屬性,需要結合hasOwnProperty方法,在迴圈內部判斷一下,某個屬性是否為物件自身的屬性。

var person = { name: '老張' };

for (var key in person) {
 if (person.hasOwnProperty(key)) {
  console.log(key);
 }
}

想要得到自身的屬性還有另外兩種方法:

es5:

利用Object.getOwnPropertyNames(obj)

var person = { name: '老張' }
var props = Object.getOwnPropertyNames(person) 

es6:

利用Object.keys(obj)

var person = { name: '老張' }
var props = Object.keys(person)

感興趣的朋友可以使用線上HTML/CSS/JavaScript程式碼執行工具:http://tools.jb51.net/code/HtmlJsRun測試上述程式碼執行效果。

更多關於JavaScript相關內容感興趣的讀者可檢視本站專題:《javascript面向物件入門教程》、《JavaScript錯誤與除錯技巧總結》、《JavaScript資料結構與演算法技巧總結》、《JavaScript遍歷演算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程式設計有所幫助。