未捕获的类型错误无法读取未定义的属性“body”
2014-01-24
2104
我很难弄清楚为什么会出现此错误。我确保 JavaScript 在 html 之后加载,我甚至尝试用 document 和 window 替换 this.doc 和 this.win,但结果没有改变。这是我正在使用的代码。它是在
<head>
中通过
<script src="window.js" type="text/javascript"></script>
实现的(我也在文档末尾尝试过)
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);
任何帮助都将不胜感激。
1个回答
这是因为在调用回调时
this
不是
Window
对象,而是全局对象 (
window
)。解决方案是
绑定
函数:
this.win.addEventListener('resize', this.resize.bind(this));
如果您确实需要与 IE8 兼容,请执行以下操作:
var _this = this;
this.win.addEventListener('resize', function(){_this.resize() });
但您的全局构造会引发警报。请注意不要构建无用的冗长类“java 风格”。您真的需要这个
Window
类吗?
Denys Séguret
2014-01-24