在Javascript中,我定义了一个这样的对象:
function myObject() {
this.x = 5;
window.addEventListener("resize", this.resizeHandler);
}
myObject.prototype.doSomething = function() {
alert(this.x);
}
myObject.prototype.resizeHandler = function() {
this.doSomething(); // Here occurs error.
}
var obj = new myObject();
但是我遇到错误消息“Uncaught TypeError:undefined不是函数”。问题是“为什么会这样?”解释会很棒!
提前感谢。
答案 0 :(得分:4)
您需要确保this
的上下文正确无误......
function myObject() {
this.x = 5;
window.addEventListener("resize", this.resizeHandler.bind(this));
}
myObject.prototype.doSomething = function() {
alert(this.x);
}
myObject.prototype.resizeHandler = function() {
this.doSomething(); // Here occurs error.
}
此处使用了.bind(this)
。
用作事件处理程序的函数中的this
更改。