Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象数组中的函数对象_Javascript_Arrays_Function Pointers_Dom Events - Fatal编程技术网

Javascript 对象数组中的函数对象

Javascript 对象数组中的函数对象,javascript,arrays,function-pointers,dom-events,Javascript,Arrays,Function Pointers,Dom Events,我试图以面向对象的方式用Javascript实现一个模型。假设我有一个带有一系列函数的对象X。我想要一个对象数组“in X”,它的一些字段指向X中的一些函数。下面是我尝试的示例: function X(){ this.open = function(e){...}; this.run = function(e){...}; this.close = function(e){...}; //... this.STATES = { 1: {name : "opening", applyA

我试图以面向对象的方式用Javascript实现一个模型。假设我有一个带有一系列函数的对象X。我想要一个对象数组“in X”,它的一些字段指向X中的一些函数。下面是我尝试的示例:

function X(){

this.open = function(e){...};
this.run = function(e){...};
this.close = function(e){...};
//...

this.STATES = {
    1: {name : "opening", applyAction : this.open},
    2: {name : "runing", applyAction : this.run},
    3: {name : "closing", applyAction : this.close},
    //...
};

this.currentState = this.STATES[1];

//...

this.update = function(e){
    //...
    currentState.applyAction(e);
    //...
}

然而,这种方法并不像预期的那样有效。我不知道是什么错了,如果您有其他方法来做同样的事情,我将非常感激。

这不起作用,因为以下代码中的“This”指向您正在定义的文本对象,而不是预期的“This”:

this.STATES = {
    1: {name : "opening", applyAction : this.open},
    2: {name : "runing", applyAction : this.run},
    3: {name : "closing", applyAction : this.close},
    //...
};
试一试


我还阅读了有关Javascript作用域的内容。

这不起作用,因为以下代码中的“This”指向您正在定义的文本对象,而不是预期的“This”:

this.STATES = {
    1: {name : "opening", applyAction : this.open},
    2: {name : "runing", applyAction : this.run},
    3: {name : "closing", applyAction : this.close},
    //...
};
试一试


我还阅读了有关Javascript作用域的内容。

非常感谢!这是一个很大的帮助,我写了一篇关于同一点的教程。这里解释了“this”指针的行为:非常感谢!这是一个很大的帮助,我写了一篇关于同一点的教程。此处解释了“this”指针的行为: