Javascript 如何从其他对象调用回调

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

这是我用JavaScript编写的一个游戏。 我有一个对象(片段)数组,每个对象都有多个方法(方法1..方法N)。同时,我还有一些其他函数(gameAI),它决定了对象调用方法的顺序

//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();
}