定义属性,使其具有与普通属性类似的获取/设置

时间:2018-06-22 16:05:27

标签: javascript properties

考虑以下代码:

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.barfoo.baz来注意后者不是“真实”属性。

但是它不会出现在for循环中,这会破坏我的代码。

我基本上想在设置属性时进行拦截,例如对它做出反应或委托给其他东西。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您遇到的问题是由于您定义的属性不是pekerjaan_aktif.cu.name。来自mdn

  

FilterPaginateOrder

     

enumerable,当且仅当在枚举相应对象的属性时显示此属性。

     

默认为enumerable

您可以通过在属性true中指定false来解决此问题:

enumerable: true

编辑:响应您对对象中由getter定义的属性的可枚举性的评论,是的,似乎是,对象文字中定义的getter是可枚举的,但不是在类定义中定义的那些。我不完全确定文档中对此有何描述,但如果有人找到我,我很乐意以此来更新我的答案。

descriptor