如何在数组中存储Object的函数指针?

时间:2013-05-21 04:07:38

标签: javascript arrays function pointers store

我正在尝试将对象函数的函数指针存储在数组中。但是当我想要访问函数中的对象的另一个属性时,它会给我带来问题。任何人都可以解决这个问题或者让我知道如何工作周围?

function O(){
      this.name="hello";
      this.f=function(){
        alert(this.name);//why does "this" refer to the array arr rather than the object?
      };
      this.arr=[];
       this.arr["x"]=this.f;



    }
    var d=new O();
    d.arr["x"]();

1 个答案:

答案 0 :(得分:4)

在这种情况下,this将引用函数被调用的对象作为(在您的情况下,数组)的方法。您需要在范围内的某处存储对O函数的引用,例如:

function O(){
      var self = this;
      this.name="hello";
      this.f=function(){
        alert(self.name);//why does "this" refer to the array arr rather than the object?
      };
      this.arr=[];
       this.arr["x"]=this.f;



    }
    var d=new O();
    d.arr["x"]();

这是JavaScript中非常常见的模式,并且具有允许函数以相同方式执行的额外好处,无论是通过d.f()调用还是d.arr["X"]()