找到我原型的变量

时间:2012-08-17 20:43:13

标签: javascript

我在Javascript中有一个对象:

function MyObject(aField) {
    this.field = aField;
}

MyObject.prototype.aFunction = function() {
    return this.field;
}

然后

var anInstance = new MyObject("blah");
var s = anInstance.aFunction();

这样可以正常工作,但如果我将该函数传递给另一个函数:

callLater(anInstance.aFunction);

我无法控制callLater并且它已缩小,但它似乎正在使用aFunctioncall()调用apply()。因此,this指向另一个对象,field未定义。

避免这种情况的最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

那是因为你失去了this的价值而是试试这个:

callLater(function() { anInstance.aFunction() });

解释,想一想

function MyObject(aField) {
    this.field = aField;
}
function MyObject2(aField) {
    this.field = aField;
}
MyObject.prototype.aFunction = someFunct;
MyObject2.prototype.aFunction = someFunct;

现在someFunct属于什么?

好好尝试MyObject.prototype.aFunction === MyObject2.prototype.aFunction这是真的!

您看到问题因此需要从类中调用它,而不仅仅是通过值引用。