我不断收到错误:
“ TypeError:无法读取未定义的属性'push'”

错误在以下行中:“ this.courseName.push(dish);”

这是代码:

let menu = {
    _courses: {
      _appetizers:[] ,
      _mains:[],
      _desserts: []
    },

    addDishToCourse(courseName, dishName, dishPrice){
        const dish = { name: this.dishName, price: this.dishPrice };

        // ERROR HERE: **this._courses[courseName].push(dish);**
    },
};


我已经被这个错误困扰了几个小时。有没有我看不到的东西吗?

抱歉,如果有一个简单的解决方案。我对JavaScript比较陌生。

编辑:

我确实是错误地调用了密钥。我现在将该函数称为:

  menu.addDishToCourse("_appetizers", "random", 10);
  console.log(menu._courses._appetizers);


当我在编译器中登录时,它返回:

    [ { name: undefined, price: undefined } ]


似乎没有调用该函数。我是否从根本上错误地解决了这个问题?

最佳答案

您的第一个问题是将错误的courseName传递给函数,这就是为什么会出现错误的原因。

第二个问题是,当您使用{ name: this.dishName, price: this.dishPrice }时,您正在分配错误的值,以反对将课程数组推入。

实际上,当您使用this.dishName试图从dishName对象获取menu时,这就是undefined的原因,您只需要使用参数dishNamedishPrice即可将参数传递给函数。

    const dish = {
      name: dishName,
      price: dishPrice
    };

    this._courses[courseName].push(dish);


这是一个有效的演示:



let menu = {
  _courses: {
    _appetizers: [],
    _mains: [],
    _desserts: []
  },

  addDishToCourse(courseName, dishName, dishPrice) {
    const dish = {
      name: dishName,
      price: dishPrice
    };

    this._courses[courseName].push(dish);
  },
};


menu.addDishToCourse("_appetizers", "random", 10);
console.log(menu._courses._appetizers);

关于javascript - JavaScript TypeError,无法读取未定义的属性,但函数已定义。我究竟做错了什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49308716/

10-12 12:38
查看更多