2014-01-24 33 views
0

我很難弄清楚爲什麼我得到這個錯誤。我確信在html之後加載了javascript,我甚至試圖用文檔和窗口替換this.doc和this.win,但它沒有改變結果。這是我正在使用的代碼。它通過實施(我也試過在文檔的末尾)Javascript:uncaught typeerror無法讀取undefined的屬性'body'

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); 

任何幫助將不勝感激。

回答

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課嗎?

+0

我正在使用這個類作爲測試用例。我明白這一切似乎都毫無意義,但它只是一個小塊。非常感謝您的幫助!我只需等待接受你的答案 – Ambiguities

相關問題