我一直收到错误: " 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 } ]
似乎这个功能没有被调用。我是否从根本上错误地接近了这个?
答案 0 :(得分:1)
问题是RequestDispatcher rd=request.getRequestDispatcher("index.jsp");
rd.forward(request, response);
。
scope
是this
本身(本例中为菜单),并且object
和_courses
为其属性。
addDishToCourse
addDishToCourse
内部正在查看this
和object
的{{1}},但它们的范围是函数本身(来自参数) )。
所以正确的代码就是这样:
dishName
答案 1 :(得分:1)
您的第一个问题是您向该函数传递了错误的courseName
,这就是您收到错误的原因。
而你的第二个问题是,当你使用{ name: this.dishName, price: this.dishPrice }
时,你要分配错误的值,以反对推进你的课程数组。
事实上,当您使用this.dishName
时,您试图从dishName
对象获取menu
,这就是undefined
的原因,您只需要使用参数{{1}你和dishName
传递函数的参数。
dishPrice
这是一个有效的演示:
const dish = {
name: dishName,
price: dishPrice
};
this._courses[courseName].push(dish);