我最近看到一个监听器在对象的方法里面定义了什么都没有。很好的例子是这样的在对象内部定义的事件监听器
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;'就是。 (编辑以前的评论太迟了)。 –