潜入getter / setter

时间:2015-11-26 11:02:57

标签: javascript getter-setter

我想创建一个对象,它们将有一个名为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属性,因为它是在obj1obj2内创建的,因为它是一个自己的属性(generic_object内的.temp被遮蔽)那是我不想要的东西。所以:

问题1 :是否可以转换上述代码并获得相同的结果而不使用temp

问题2 :我们来看前面的例子。由于.onair属性永远不会成为obj1的自有属性,obj2(getter / setter不会被遮蔽), JS引擎如何在obj1.onairobj2.onair之间讲述?这些函数对象是否存储在为每个对象obj1obj2保留的内存点中,甚至,重复一遍,这些不是它们自己的属性?我对此感到困惑......

谢谢

0 个答案:

没有答案