考虑以下代码:
function Foo(){this.bar=42;}
Object.defineProperty(Foo.prototype, "baz", {
get:function(){return 25;},
set:function(val){}
});
var foo = new Foo();
for(var x in foo) console.log(x);
我可以(如果其余部分也实现了)不使用foo.bar
和foo.baz
来注意后者不是“真实”属性。
但是它不会出现在for循环中,这会破坏我的代码。
我基本上想在设置属性时进行拦截,例如对它做出反应或委托给其他东西。
我该怎么做?
答案 0 :(得分:2)
您遇到的问题是由于您定义的属性不是pekerjaan_aktif.cu.name
。来自mdn:
FilterPaginateOrder
enumerable
,当且仅当在枚举相应对象的属性时显示此属性。默认为
enumerable
。
您可以通过在属性true
中指定false
来解决此问题:
enumerable: true
编辑:响应您对对象中由getter定义的属性的可枚举性的评论,是的,似乎是,对象文字中定义的getter是可枚举的,但不是在类定义中定义的那些。我不完全确定文档中对此有何描述,但如果有人找到我,我很乐意以此来更新我的答案。
descriptor