我可以在控制台中调用时将项目推送到price数组,但是当我单击按钮时不能...
<input type="text" id = "currentPrice">
<button type="button" id = "calcButton">Show</button>
var Newchart = function () {
this.prices = []
}
Newchart.prototype.addNewprice = function () {
var priceValue = +(document.getElementById('currentPrice').value);
this.prices.push(priceValue);
console.log('hello')
}
var c = new Newchart();
var el = document.getElementById("calcButton");
el.addEventListener("click", c.addNewprice, false);
答案 0 :(得分:1)
这是因为回调调用中的上下文为window
,而不是您的Newchart
实例。
解决方案是使用bind
:
el.addEventListener("click", c.addNewprice.bind(c), false);
MDN有关于此问题的文档:The value of this within the handler。
答案 1 :(得分:0)
this
变量
el.addEventListener("click", c.addNewprice, false);
编辑 - 由@dystroy建议
在您的情况下this
指向window
而不是class
或function
。