2012-02-16 57 views
0

下面的代碼:
JavaScript部分:的Javascript:以不同的方式調用對象的方法

ContatoreCostr = function(nome){ 
     this.nome = nome; 
     this.cont = 0; 
     this.inc = function() { 
     alert(this + "--" + this.nome + "--" + this.cont++); 
     }; 
    } 
    var ccc= new ContatoreCostr("zio"); 

window.onload = function() { 
    //document.getElementById("bid").onclick = ccc.inc; // DO NOT WORK 
    document.getElementById("bid").onclick = function(){ccc.inc()}; //WORKS 
} 

HTML部分:

<button onClick="ccc.inc()">Buttton1</button> 
<button id="bid">Bottone2</button> 

這裏有兩種不同的方式來調用內部的相同方法相同的對象,事實上'繼續'屬性繼續增加任何按鈕被點擊。上下文改變:點擊Button1時是窗口,點擊Button2時是tagButton,但沒關係。 我不明白爲什麼我被迫分配函數(){ccc.inc()}而不是ccc.inc那。在我看來,應該沒有區別。 Tnx

回答

0

()缺失的第一種方法? 應該

document.getElementById("bid").onclick = ccc.inc(); 
+0

不,如果你把括號inc()在加載頁面時進行評估,那不是你想要的。 – chairam 2012-02-16 16:19:58

0

「這個」只有當此功能已經由「實例」直接調用的工作,就像在ccc.inc()。當作爲參考傳遞時,「this」指的是調用上下文,在這種情況下是可點擊元素。

+0

ok,所以你說:在'不工作'的情況下,inc()被稱爲int'this'的上下文,它是buttonTag。與'作品'的情況相反,應該像這樣:buttonTag就是這個。解釋器考慮加載ccc,即先前實例化的對象,然後在ccc上調用inc()。這說得通。事實上,我花了一些時間來弄清楚'作品'的解決方案,我通過試驗和錯誤來進行研究,但我仍然無法弄清楚設計'作品'解決方案的一系列邏輯步驟。我會感謝任何能夠深入推薦文檔的人。謝謝。 – chairam 2012-02-16 20:07:51

+0

呃...是的,沒有工程案例在調用對象的上下文中執行,這是點擊元素。在互聯網上似乎有很多關於這方面的解釋,請看這裏的例子:http://jibbering.com/faq/notes/closures/ – Ixx 2012-02-16 21:17:07

+0

我編輯了我的帖子。我不能給你一個深刻的解釋,因爲這個概念現在對我來說只是表面上很清楚。當我有時間時,我還會閱讀文檔^^ – Ixx 2012-02-16 21:29:20

相關問題