构造函数不是javascript中的函数错误

时间:2016-12-20 06:00:24

标签: javascript function constructor

当我运行以下代码时:

function eatingFood(food){
  this.food = food;
  return 'I"m eating' + this.food;
}

var apple = new eatingFood("apple");
console.log(apple()); 

我收到以下错误:

  

apple不是函数错误。

为什么会这样?

2 个答案:

答案 0 :(得分:0)

要使当前代码正常工作,您需要做一些事情。

  1. 删除class-object表示法。
  2. 返回一个功能。
  3. 
    
    function eatingFood(food){
      this.food = food;
      return function () {
        return 'I"m eating ' + this.food;
      };
    }
    
    var apple = eatingFood("apple");
    console.log(apple()); 
    
    
    

    如果你真的打算创建一个对象,那么你可以很好地使用以下格式。

    
    
    function eatingFood(food){
      this.food = food;
      this.toString = function () {
        return 'I"m eating ' + this.food;
      };
    }
    
    var apple = new eatingFood("apple");
    console.log(apple.toString());
    
    
    

答案 1 :(得分:-1)

使用new关键字,var apple将是一个看似{food: 'apple'}的对象。

而且......好吧......你不能在对象的末尾放两个括号,因为对象不是函数!