我想我在这里误解了一些东西。我有一个对象,其中包含我希望不可枚举的属性。我希望能够从对象的函数本身中为其分配值,但是当我这样做时,该属性变得可枚举。
例子:
function ObjectNode() {
}
Object.defineProperty(ObjectNode.prototype, "parent", {
value:null
// enumerable and configurable default to false
}
// Pass an ObjectNode instance and set this object node as its parent
ObjectNode.prototype.addChild = function(node) {
node.parent = this; // <-- node.parent is now enumerable
...more code...
};
实际发生的是,为 node.parent 分配一个值会创建一个名为 parent 的新“自己的”属性,它会覆盖原始属性。
有没有一种方法可以在不这样做的情况下在内部为不可枚举的属性赋值?还是我必须求助于在闭包中引用变量的 getter/setter 属性?
编辑:
GGG的回答值得称赞,因为正是他的建议让我得到了最终的答案。
我想要做的基本上是从“for(key in object)”语句中隐藏一个简单的属性。我能够这样做:
function ObjectNode() {
Object.defineProperty(this, "parent", {
value:null,
writable:true
});
}
我一开始对此犹豫不决的一个原因是错误地理解我不希望每个实例都重新创建该属性。但是,呃,这就是实例属性!!!!
谢谢,GGG,帮助我重新调整我的大脑!