2011-07-14 80 views
0

我有一些JavaScript的困境原型方法,讓我們說我們有一個構造函數的Javascript塞汀DOM事件構造

function test(element) { 
    this.element = element; 
    this.element.onfocus = function() { this.onfocus(); } 
} 

test.prototype.onfocus = function() { 
    alert("focused"); 
} 

new test(document.getElementByID("E1")); 

所以我想動態設置在構造函數中的焦點事件,但它不似乎無法工作,我無法弄清楚。

任何幫助?

感謝,

AJ

回答

1

在JavaScript中,並在this.element.onfocus = function() {this.onfocus(); }的背景下,第二是誰發射事件的元素。

換句話說,你的代碼應該是這樣的,如果你想在一個適當的方式工作:

function test(element) { 
    this.element = element; 

    var currentObject = this; 
    this.element.onfocus = function() {currentObject.onfocus(); } 
} 

不要以爲JavaScript是一種體面的面向對象的編程語言,它的原型爲導向它有一些弱點,比如影響你的代碼的東西。

你爲什麼不讀這篇文章?我相信它會澄清關鍵字爲你:

+0

非常感謝,這很好,我會採納你的意見,並閱讀文章以及。 –

+0

這不是關於做垃圾郵件,但也許你對我爲JavaScript所做的一些OOP實現感興趣,它就像一個魅力,因爲我正在使用一些我要發佈到開源社區的個人項目:http ://joopl.codeplex.com/。 –

1

您必須參考存儲「這個」,因爲聚焦狀態功能是在另一個上下文和「本」是指到別的東西:

function test(element) { 
    this.element = element; 
    var that = this; 
    this.element.onfocus = function() { that.onfocus(); } 
}