为了账号安全,请及时绑定邮箱和手机立即绑定

函数传参,方法中的传参的问题,看下推测是否正确?

函数传参,方法中的传参的问题,看下推测是否正确?

Cats萌萌 2018-12-27 13:15:26
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,对象方法内,当然可以使用全局作用域定义的变量。

查看完整回答
反对 回复 2019-01-19
  • 1 回答
  • 0 关注
  • 355 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信