将类函数作为参数传递给另一个类以在JavaScript中用作回调

将类函数作为参数传递给另一个类以在JavaScript中用作回调,javascript,class,Javascript,Class,好的,我有两门课。 类1包含一个特定的函数,该函数访问类的一些属性。这就是它看起来的样子: function class1() { this.variable = "something"; } class1.prototype.callback = function() { console.log(this.variable); // Returns undefined } 类2可以调用给定的任何函数,如下所示: function class2() {} class2.pr

好的,我有两门课。 类1包含一个特定的函数,该函数访问类的一些属性。这就是它看起来的样子:

function class1() {
    this.variable = "something";
}

class1.prototype.callback = function() {
    console.log(this.variable); // Returns undefined
}
类2可以调用给定的任何函数,如下所示:

function class2() {}

class2.prototype.caller = function(callback) {
    callback();
}
然后在我的常规Javascript中,我执行以下操作:

var c1 = new class1();
var c2 = new class2();
c2.caller(c1.callback);
它应该返回“something”,但是它抛出了一个未定义的错误。我知道这是因为它在class2的范围内,它试图访问那里的变量,但是我不知道如何让它在class1的范围内执行

非常感谢您的帮助

使用
.bind()
或包装函数:

c2.caller(c1.callback.bind(c1));
请注意,您的代码是错误的,因为它在传入返回值之前调用了函数

或者:

c2.caller(function() { c1.callback(); });

不要在构造函数中分配
prototype
方法。Pointy是对的,prototype的目的是避免在每个实例中定义。谢谢,我不知道这一点。我将编辑我的类:)啊,是的,我明白了,我输入这个时出错了。我要试试bind,谢谢@Qub1
.bind()
的唯一问题是,真正的旧浏览器不支持它,但是