0
我想在下面的JavaScript中用defineProperty
定義動態獲取器函數。爲了實現只讀功能,我想使用defineProperty
。這使我能夠在setter函數中拋出Exception。如何在JavaScript中使用defineProperty動態獲取?
但是,吸氣功能將不起作用。我認爲這個getter動態地返回obj
的任何屬性。但事實並非如此。它總是返回obj["three"]
,最後一個屬性。有沒有什麼方法可以使動態getter在JavaScript中返回適當的屬性?
var obj = {"one":1, "two":2, "three":3};
var cloned = {};
for (var prop in obj)
{
var getter = makeGetter(prop);
Object.defineProperty(cloned, prop,
{
set: function()
{
throw new UnableRewriteException('original cannot be rewrite');
},
get: function()
{
return obj[prop]
},
enumerable: true
});
}
這再次看起來像經典的閉環問題,請記住'var'將是功能級別而不是塊級別。 –
[Javascript閉合內循環 - 簡單實用示例]的可能重複(http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) –