Javascript:uncaught typeerror无法读取未定义的属性'body'

时间:2014-01-24 15:30:09

标签: javascript html javascript-events

我很难搞清楚为什么会收到此错误。我确保在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);

非常感谢任何帮助。

1 个答案:

答案 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课吗?