Object.keys()

admin發表於2018-09-14

物件和陣列都是鍵值對集合,不同的是,物件是無序鍵值對集合,陣列是有序鍵值對集合。

陣列中的鍵是陣列的索引,物件的鍵是物件的屬性名稱。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
let antzone={
  webName:"螞蟻部落",
  age:4,
  address:"青島市南區",
  func:function(){
    // code 
  }
}

上面物件中,webName、age、address和func就是物件的鍵。

Object.keys方法從名稱可以猜測出,它的作用是用來獲取物件的鍵,也就是物件的屬性名稱或者方法名稱。

特別說明:必須是物件自有屬性,不能來自原型鏈。

ES5新增此方法。

更多Object物件內容參閱JavaScript Object 物件一章節。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
Object.keys(object)

引數解析:

(1).object:必需,包含屬性或者方法的物件。

此方法的返回值是一個存放著屬性和方法名稱的陣列。

瀏覽器相容:

(1).IE9+瀏覽器支援此方法。

(2).edge瀏覽器支援此方法。

(3).谷歌瀏覽器支援此方法。

(4).火狐瀏覽器支援此方法。

(5).opera瀏覽器支援此方法。

(6).safria瀏覽器支援此方法。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let obj = {
  webName: "螞蟻部落",
  url: "www.softwhy.com",
  address:"青島市南區",
  func:function(){
    //code
  }
}
console.log(Object.keys(obj));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/14/103813usb5w7sxzhzoi23e.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到Object.keys方法可以獲取物件的鍵名,也就是說行或者方法名稱。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let obj = {
  webName: "螞蟻部落",
  url: "www.softwhy.com",
  address:"青島市南區"
}
Object.defineProperty(obj, "webName", {
  enumerable:false
})
console.log(Object.keys(obj));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/14/103845a777k6ddg8rgr7xk.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

鍵必須是可列舉的,否則Object.keys方法無法獲取。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
Object.prototype.age = 4;
let obj = {
  webName: "螞蟻部落",
  url: "www.softwhy.com",
  address:"青島市南區"
}
console.log(Object.keys(obj));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/14/103916i0jc00icho8ozrh0.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

無法列舉原型鏈上屬性或者方法名稱。