我想创建一个对象,它们将有一个名为generic_object
的对象作为原型对象。 generic_object
必须具有 getter / setter 属性,其作用是为新创建的对象分配不同的函数。实际上,访问者属性.onclick
的工作原理与此类似。我们可以通过使用setter为不同的DOM元素提供不同的侦听器:
elem.onclick=function(){...};
我构建了以下内容:
var generic_object={
temp:null,
set onair(callback){
callback();
this.temp=callback;
},
get onair(){
return this.temp;
}
};
var obj1=Object.create(generic_object);
var obj2=Object.create(generic_object);
obj1.onair=function(){console.log(1);};
obj2.onair=function(){console.log(2);};
这可以完成我的工作,但我希望消除.temp
属性,因为它是在obj1
和obj2
内创建的,因为它是一个自己的属性(generic_object内的.temp
被遮蔽)那是我不想要的东西。所以:
问题1 :是否可以转换上述代码并获得相同的结果而不使用temp ?
问题2 :我们来看前面的例子。由于.onair
属性永远不会成为obj1
的自有属性,obj2
(getter / setter不会被遮蔽), JS引擎如何在obj1.onair
和obj2.onair
之间讲述?这些函数对象是否存储在为每个对象obj1
和obj2
保留的内存点中,甚至,重复一遍,这些不是它们自己的属性?我对此感到困惑......
谢谢