我最近看到一個監聽器在對象的方法裏面定義了什麼都沒有。很好的例子是這樣的在對象內部定義的事件監聽器
var obj={
shout:function(){
onclick = function(){
alert("hi");
}
}
}
obj.shout()
這個工程就像window.onclick = shout;
也當我們重新定義這樣
var obj={
shout:function(s){
onclick = function(s){
alert(s);
}
}
}
obj.shout('hi')
它輸出[對象鼠標事件]功能
它是怎樣到達全自動綁定到窗口對象?這應該指向obj對象,如果onclick被綁定到this
呼籲這是指obj
(我的懷疑)它是如何與窗口對象一起工作?
您可能認爲全局變量(這裏是「obj」和「onclick」)實際上是全局「窗口」對象(在瀏覽器中)的屬性。也就是說,'var obj = foo;'實際上是'window [obj] = foo;'aka'window.obj = foo;' –
Err。 'window [「obj」] = foo;'就是。 (編輯以前的評論太遲了)。 –