JS中的call和apply

在看JS的一些框架的时候会经常遇到这两个函数,我个人认为这两个函数的出现就是因为JS中的奇怪的this,在JS中,this始终指向的是其执行上下文,而不像C#,Java之中的this那么专一,关于更多的内容可以见前面的博文。

call的作用和apply的作用是一样的,只是使用的时候所需要的参数类型不一样,前者是一个参数序列,后者是一个数组,仅此而已。

call和apply是函数上定义的一个方法,做用用于在执行的时候,改变上下文,也就是this对象,下面的测试代码可以自己去执行下,在chrome中可以跟踪这this的变化。

 

             function add(x, y) {
                return x + y;
            }

           alert(add(4, 5));

            var t = {};
            alert(add.call(t, 4, 5));
         
            var c = add.apply(t,[4,5]);
            alert(c);
  var a = { "x": 1, "y": 2 };
            function add(x, y) {
                return x + y;
            }

            function add1(x, y) {
                return this.x + this.y;
            }
            alert(add(4, 5));

            var t = {};
            alert(add.call(t, 4, 5));
         
            var c = add1.apply(a,[4,5]);
            alert(c);

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。