[分享] Object.keys - ECMAScript that you do not know

Object.keys

今天同事詢問下,才發現有這個好東西,Object.keys

使用方式

可以將 Object Key 值轉換成 Array 格式。

var o = {
name: 'Caesar',
atts : {
sex: 'male',
age: 99,
},
home: true
};

var userArrays = Object.keys(o);

console.dir(userArrays);

結果會顯示

[ 'name', 'atts', 'home' ]<br></br>

使用方式十分簡單,直接呼叫 Object.keys 這個方式就可以,記得裡面必須傳入 Object 屬性的物件,傳入 Object 則會顯示 Error。
透過此方法,可以直接取得 Object 中 第一層 Key 值,組合成一串 Array ,Array 的索引值 (index) 從第 0 個開始。

這樣的方式通常使用於 iterator ,會搭配 forEach 來使用。或者是需要取出使用者傳遞的物件參數。這些情況下都可能使用到這個方式。
因為將 Object 轉成 Array 之後,可以快速透過 Array.join 的方式,將字串重新組合,不用再寫迴圈處理。

後記

當然這個方法只限定於當代的瀏覽器,至於比較早期的,可以用底下的程式,模擬,

if (!Object.keys) Object.keys = function(o) {
if (o !== Object(o))
throw new TypeError('Object.keys called on a non-object');
var k=[],p;
for (p in o) if (Object.prototype.hasOwnProperty.call(o,p)) k.push(p);
return k;
}

*
*另外 這個方法 Object.keys 只提供取出第一層 Key 值,如果需要將全部的 key 轉成 Array 可以參考 Object 另外一個屬性,getOwnPropertyNames

參考資料

CaesarChi

Web developer, focus on website fullstack, special JavaScript, and love sharing developing experience and communicate with developers. http://about.me/clonn