Javascript:存储getter / setter值的位置?

时间:2015-11-27 09:26:56

标签: javascript

考虑经典的getter / setter实现:

var test_obj={
   get num(){return this._size},
   set num(val){this._size=val;}
};
var obj1=Object.create(test_obj);
var obj2=Object.create(test_obj);
Object.getOwnPropertyNames(obj1); //[]
Object.getOwnPropertyNames(obj2); //[]
obj1.num=5;
obj2.num=7;
console.log(test_obj.num);  //undefined
console.log(obj1.num);  //5
console.log(obj2.num);  //7
Object.getOwnPropertyNames(obj1); //["_size"]
Object.getOwnPropertyNames(obj2); //["_size"]

以上内容对我来说完全可以理解,例如,getter obj1.num的值存储在 data 属性obj1._size中,而getter obj2.num的值}存储在 data 属性obj2._size中(对于obj1obj2对象,_size是自己的属性。)

我的问题是我找不到内置getter / setter属性的等价物。其中有很多,我们选择 id ,这是 Element.prototype 的getter / setter。

var elem=document.getElementById('mydiv');

elemHTMLDivElement接口对象的实例对象,elem的原型链包含Element.prototype,现在我们有:

elem.id; //"mydiv"
Object.getOwnPropertyNames(elem); //[]

elem.id的值存储在哪里,因为elem没有自己的属性?在我们的示例中,执行此任务的是_size。也许,elem上有一些无法访问的隐藏属性?但是,我在Javascript中找不到任何隐藏对象属性的方法。

谢谢

0 个答案:

没有答案