JavaScript Object.values()

admin發表於2018-08-21

Object.values方法返回儲存指定物件所有自有可列舉屬性值的陣列。

此方法遍歷屬性的順序與使用for in語句遍歷的順序相同。

規則如下:

(1).首先遍歷屬性名為數值的屬性,按照數字由小到大。

(2).再次遍歷屬性名為字串的屬性,按照定義時間由早到晚。

(3).最後遍歷屬性名為Symbol(ES2015新增)值的屬性,按照定義時間由早到晚。

特別說明:

(1).for in可以遍歷原型鏈上的屬性,Object.values不可以。

(2).屬性分為可列舉屬性和不可列舉屬性,下面做一下簡單介紹:

屬性是否可以被列舉,是由屬性自身的enumerable屬性所決定的,其實屬性也類似一個物件,具有些許特徵。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
let Antzone={
  webName:"螞蟻部落",
  age:6
}
Object.defineProperty(Antzone, "url", {
    value: "http://www.softwhy.com",
    enumerable: false
});

為物件Antzone物件新增一個url屬性,並且規定其為不可列舉,enumerable屬性值為false。

ES2017新增Object.values方法。

語法結構:

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

引數解析:

(1).obj:必需,被返回可列舉屬性值的物件。

瀏覽器相容:

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

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

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

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

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

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

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
let Antzone={
  webName:"螞蟻部落",
  age:6
}
console.log(Object.values(Antzone));

谷歌控制檯程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/21/003128yr8reh2e888xe5t3.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到返回值是一個陣列,儲存的內容是可遍歷屬性的屬性值。

[JavaScript] 純文字檢視 複製程式碼
let Antzone={
  webName:"螞蟻部落",
  age:6
}
Object.defineProperty(Antzone, "url", {
    value: "http://www.softwhy.com",
    enumerable: false
});
console.log(Object.values(obj));

谷歌控制檯程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/21/003204lhkjv4zkkkvkkhok.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

由此可見,不可列舉的屬性,此方法是無能為力的。

相關文章