Javascript 如何从其他对象调用回调
这是我用JavaScript编写的一个游戏。 我有一个对象(片段)数组,每个对象都有多个方法(方法1..方法N)。同时,我还有一些其他函数(gameAI),它决定了对象调用方法的顺序Javascript 如何从其他对象调用回调,javascript,callback,Javascript,Callback,这是我用JavaScript编写的一个游戏。 我有一个对象(片段)数组,每个对象都有多个方法(方法1..方法N)。同时,我还有一些其他函数(gameAI),它决定了对象调用方法的顺序 //Array of objects definition function gamePiece() { this.CallBack = null; this.Method_1 = function... this.Method_2 = function... this.Method
//Array of objects definition
function gamePiece() {
this.CallBack = null;
this.Method_1 = function...
this.Method_2 = function...
this.Method_3 = function...
this.Method_N = function() {
//do things...
if( this.CallBack != null ) {
if( this.CallBack != null) {
// Question is here
this.CallBack(); // <-- I do not want this.CallBack, I want that.CallBack()
}
}
}
}
var pieces = new Array();
for(var i=0; i<10; i++) {
pieces.push = new gamePiece();
}
function gameAI() {
pieces[4].CallBack = pieces[3].Method_1;
pieces[3].CallBack = pieces[2].Method_2;
pieces[2].CallBack = pieces[1].Method_1;
pieces[4].Method_2();
}
gameAI();
有什么想法吗?正如raina77ow在评论中提到的,你的逻辑似乎非常复杂。无论如何,您遇到的问题的解决方案是绑定所需的方法:
pieces[4].CallBack = pieces[3].Method_1.bind(pieces[3]);
这将确保在执行回调时,它运行的上下文将是
片段[3]
显然我没有足够的要点来评论,因此向StackOverflow维护人员道歉
@雨77度
游戏编程通常是非常复杂的,我在这里给出的示例只是为了说明这个问题。每个方法都有自己的异步方法和回调
差不多
var methodsToCall = new Array();
methodsToCall.push(...
methodsToCall.push(...
methodsToCall.push(...
...
for(var i in methodsToCall) {
i();
}
不起作用这就是你的想法吗?无意冒犯,但你似乎真的把事情复杂化了。不如改用责任链?
var methodsToCall = new Array();
methodsToCall.push(...
methodsToCall.push(...
methodsToCall.push(...
...
for(var i in methodsToCall) {
i();
}