2011-11-23 108 views
4

是否可以在IE8中模擬Object.getOwnPropertyNames是否可以在IE8中模擬Object.getOwnPropertyNames

我試圖讓這個fiddle在IE8中工作。

我相信唯一剩下的就是做一個函數來模擬getOwnPropertyNames

當然,在IE8中擴展JavaScript對象的基本問題的其他解決方案是非常值得讚賞的。

更新:工作fiddle它使用外部es5填充腳本文件。

結論:沒有,但你可以勻Object.keys

+2

**結論**不,但你可以墊片Object.keys – Raynos

回答

8

Object.getOwnPropertyNames()返回一個對象都枚舉不可枚舉自己的屬性。無法遍歷ECMAScript 3rd Edition實現中的非枚舉屬性,因此只能獲得可枚舉的屬性。

這是相當簡單寫一個返回枚舉自己的屬性:

var arr = []; 
for (var k in obj) { 
    if (obj.hasOwnProperty(k)) 
     arr.push(k); 
} 

這是(或多或少)的Object.keys()相當。但是,如果這還不夠,那麼你的運氣不好。

+0

謝謝,似乎我的屬性是可更新的小提琴作品enumerable。 – Farmor

+0

@Farmor:那麼你應該使用['Object.keys'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys)。 –

+0

是的,我同意,似乎正確的方式。 – Farmor

相關問題