我已经定义了这个功能:
var Test = function(){
};
Test.prototype={
getColor: function(){
return "red";
},
createCar: function(){
var color = this.getColor(); //ERROR: this.getColor is not a function
...
},
getCar: function(){
return new CarFactory(1, this.createCar);
}
}
如您所见,我已经定义了三个 * 原型 *函数: getColor(), createCar()和 getCar()。
在 createCar()函数中,我调用了 getColor(),
在函数 getCar()中,我使用 this.createCar 作为 CarFactory 构造函数的参数。我在上面指出的位置得到了错误“ this.getColor不是函数”,为什么会出现这个错误?如何摆脱这个错误?
答案 0 :(得分:3)
我认为您可能没有制作Test
对象并正确调用它。我将您的代码段粘贴到测试页中,然后添加:
var obj = new Test();
console.log(obj.getColor());
// Outputs 'red'
obj.createCar();
// Does not throw an error.
用...
替换console.log(color);
,在我的测试中显示正确的结果“红色”。
答案 1 :(得分:0)
答案 2 :(得分:0)
因为使用this.createCar作为回调,你只传递没有上下文的函数。
尝试更改您的代码,如下所示:
getCar: function(){
var that = this;
return new CarFactory(1, function() {
return that.createCar();
});
}
或者只是将Test实例传递给CarFactory并委托给它调用createCar:P