function bind(obj, evname, fn) { if (obj.addEventListener) { obj.addEventListener(evname, fn, false); } else { obj.attachEvent('on' + evname, function() { fn.call(obj);//问题0:此处的obj是替换非标准ie指代的window, 但是这个传参是这么传到function(){fn.call(obj);});函数里面的呢?这个函数明明没有function(没有传参){}的位置? }); }}于是试验以下代码: var num=111 var div01=document.getElementById("div01"); function bbb(){ var div01=new Object() div01.aaa=function(){//问题1,此处的定义的aaa方法应该跟addEventListener/attachEvent一样的性质吧? alert(num) } return div01 } var div01=bbb() div01.aaa()//问题2、aaa执行后能够弹出111,是否说明其实,一个元素的方法中的“变量”(不知该怎么表示)不仅可以在该元素的属性中拿值,还可以跳出该元素在script的全局中通过“作用域链”找变量的?</script></head><body><div id="div01"></div></body></html>有问题0.1.2共三个小问题哦!
1 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
问题0,JS中函数的参数并不需要显示声明的,而是函数执行时动态传入的,比如你定义函数function test(){}
,调用时依然可以传入参数调用test(1,2)
,1、2两个参数会传到函数内的。不知道你的问题是不是这个。
问题1,aaa是对象内的方法,从这一点上来说,是和上面方法一样性质的。
问题2,对象方法内,当然可以使用全局作用域定义的变量。
添加回答
举报
0/150
提交
取消