我很难搞清楚为什么会收到此错误。我确保在html之后加载了javascript,我甚至尝试用文档和窗口替换this.doc和this.win并且它没有改变结果。这是我正在使用的代码。它是通过实现的(我也在doc的末尾尝试过)
Window = function(doc, win)
{
this.doc = doc;
this.win = win;
this.resize();
this.win.addEventListener('resize', this.resize);
}
Window.prototype =
{
resize: function()
{
this.doc.body.innerHTML = window.innerHeight;
}
};
window.onload = new Window(document, window);
非常感谢任何帮助。
答案 0 :(得分:3)
这是因为this
在调用回调时不是Window
对象,而是全局对象(window
)。解决方案是bind函数:
this.win.addEventListener('resize', this.resize.bind(this));
如果您确实需要与IE8兼容,请执行以下操作:
var _this = this;
this.win.addEventListener('resize', function(){_this.resize() });
但是你的全局构造会引发警报。注意不要构建无用的详细类“java-style”。你真的需要这个Window
课吗?