【问题标题】:How do I store an Object's functions pointers in an array?如何将对象的函数指针存储在数组中?
【发布时间】:2013-05-15 17:54:40
【问题描述】:

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

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"]();

【问题讨论】:

标签: javascript arrays function pointers store


【解决方案1】:

在这种情况下,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"]() 调用的

【讨论】:

  • +1 您可能会说“作为一种方法调用”,而不是“附加到”。
  • @RobG - 是的,好电话,我把它放在引号里,因为我想不出一个好的表达方式..
猜你喜欢
  • 2016-03-26
  • 2019-12-18
  • 2022-11-17
  • 2015-03-24
  • 2016-02-12
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多