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

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共三个小问题哦!

Cats萌萌
浏览 356回答 1
1回答

慕尼黑8549860

问题0,JS中函数的参数并不需要显示声明的,而是函数执行时动态传入的,比如你定义函数function test(){},调用时依然可以传入参数调用test(1,2),1、2两个参数会传到函数内的。不知道你的问题是不是这个。问题1,aaa是对象内的方法,从这一点上来说,是和上面方法一样性质的。问题2,对象方法内,当然可以使用全局作用域定义的变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript