好吧,所以我有两节课。 类1包含一个特定的函数,它访问某些类的属性。这就是它的样子:
function class1() {
this.variable = "something";
}
class1.prototype.callback = function() {
console.log(this.variable); // Returns undefined
}
Class 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的范围内执行。
非常感谢任何帮助!
答案 0 :(得分:7)
使用.bind()
或包装函数:
c2.caller(c1.callback.bind(c1));
请注意,您的代码错误,因为在传递返回值之前调用了函数。
可替换地:
c2.caller(function() { c1.callback(); });