我不断收到错误:
“ 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
的原因,您只需要使用参数dishName
和dishPrice
即可将参数传递给函数。
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/