我想defineProperty
在 JavaScript 中定义动态 getter 函数,如下所示。为了制作只读功能,我想使用defineProperty
. 这使我能够在 setter 函数中抛出异常。
但是,getter 函数将不起作用。我认为这个 getter 会obj
动态返回任何属性。但事实并非如此。它总是返回obj["three"]
, last 属性。是否有任何方法可以制作在 JavaScript 中返回适当属性的动态 getter?
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
});
}