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