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

构造函数不是javascript中的函数错误,javascript,function,constructor,Javascript,Function,Constructor,当我运行以下代码时: function eatingFood(food){ this.food = food; return 'I"m eating' + this.food; } var apple = new eatingFood("apple"); console.log(apple()); 我得到了以下错误: 苹果不是一个函数错误 这是为什么?通过使用new关键字,var apple将是一个看起来像{food:'apple'}的对象 和。。好不能在对象的末尾放两个括号,因为

当我运行以下代码时:

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

var apple = new eatingFood("apple");
console.log(apple()); 
我得到了以下错误:

苹果不是一个函数错误


这是为什么?

通过使用
new
关键字,
var apple
将是一个看起来像
{food:'apple'}
的对象


和。。好不能在对象的末尾放两个括号,因为对象不是函数

通过使用
new
关键字,
var apple
将是一个看起来像
{food:'apple'}
的对象


和。。好不能在对象的末尾放两个括号,因为对象不是函数

要使当前代码正常工作,只需做几件事

  • 删除类对象表示法
  • 返回一个函数
  • 功能食品(食品){ 这就是食物; 返回函数(){ 返回'I'm eating'+this.food; }; } var苹果=食用食品(“苹果”);
    log(apple());要使当前代码正常工作,您只需做几件事

  • 删除类对象表示法
  • 返回一个函数
  • 功能食品(食品){ 这就是食物; 返回函数(){ 返回'I'm eating'+this.food; }; } var苹果=食用食品(“苹果”);

    log(apple())
    apple
    保存一个字符串值,该值由
    new eatingFood(“苹果”)返回不是函数您永远不应该在构造函数中返回。为什么您希望
    apple
    是函数?您正在使用
    new
    呼叫
    eatingFood
    new Func()
    返回一个对象。你认为新的
    有什么作用?你读过一些关于新的,比如?@Rajesh-uh?我认为new eatingFood创建了eatingFood函数的一个实例?是的,它创建了一个具有特定结构的对象(例如,它将有一个属性
    food
    )。但该对象不是一个函数。为什么您认为是这样的?
    apple
    持有一个字符串值,该值由
    neweatingfood(“apple”)返回不是函数您永远不应该在构造函数中返回。为什么您希望
    apple
    是函数?您正在使用
    new
    呼叫
    eatingFood
    new Func()
    返回一个对象。你认为新的
    有什么作用?你读过一些关于新的,比如?@Rajesh-uh?我认为new eatingFood创建了eatingFood函数的一个实例?是的,它创建了一个具有特定结构的对象(例如,它将有一个属性
    food
    )。但该对象不是一个函数。为什么会这样?如果我想使用new()关键字或创建实例,这是函数中必须执行的一个函数?@Devalor想一想:为什么需要一个新的
    eatingFood
    实例?最符合逻辑的做法是创建一个
    Food
    构造函数,而不是使用
    eat
    函数。您没有使用new()@AndrewLi只是询问您的意见,我的答案是否合理?更新的一个。我发现object literal更有意义,我创建了3个模式:看一看。如果我想使用new()关键字或aka创建实例,这是函数中必须执行的函数?@Devalor思考一下:为什么需要一个新的
    eatingFood
    实例?最符合逻辑的做法是创建一个
    Food
    构造函数,而不是使用
    eat
    函数。您没有使用new()@AndrewLi只是询问您的意见,我的答案是否合理?更新的一个。我发现object literal更有意义,我创建了3种模式:看一看。更准确地说,
    apple
    是一个变量。当然,可以使用一个后跟括号的变量(即调用表达式)。但是,变量的解析值很重要,在本例中它不是一个函数。更准确地说,
    apple
    是一个变量。当然,可以使用一个后跟括号的变量(即调用表达式)。但是,变量解析的值很重要,在本例中它不是函数。