考虑经典的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
中(对于obj1
和obj2
对象,_size
是自己的属性。)
我的问题是我找不到内置getter / setter属性的等价物。其中有很多,我们选择 id ,这是 Element.prototype 的getter / setter。
var elem=document.getElementById('mydiv');
elem
是HTMLDivElement
接口对象的实例对象,elem
的原型链包含Element.prototype
,现在我们有:
elem.id; //"mydiv"
Object.getOwnPropertyNames(elem); //[]
elem.id
的值存储在哪里,因为elem
没有自己的属性?在我们的示例中,执行此任务的是_size
。也许,elem
上有一些无法访问的隐藏属性?但是,我在Javascript中找不到任何隐藏对象属性的方法。
谢谢