原型功能问题(更新!)

时间:2011-04-18 12:21:24

标签: javascript javascript-events prototype javascript-framework

我已经定义了这个功能:

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不是函数”,为什么会出现这个错误?如何摆脱这个错误?

3 个答案:

答案 0 :(得分:3)

我认为您可能没有制作Test对象并正确调用它。我将您的代码段粘贴到测试页中,然后添加:

var obj = new Test();
console.log(obj.getColor());
// Outputs 'red'
obj.createCar();
// Does not throw an error. 

...替换console.log(color);,在我的测试中显示正确的结果“红色”。

http://jsfiddle.net/2F5zz

答案 1 :(得分:0)

答案 2 :(得分:0)

因为使用this.createCar作为回调,你只传递没有上下文的函数。

尝试更改您的代码,如下所示:

   getCar: function(){
      var that = this;
      return new CarFactory(1, function() {
            return that.createCar();
      });
   }

或者只是将Test实例传递给CarFactory并委托给它调用createCar:P