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);
原文地址:https://www.cnblogs.com/zuiyirenjian/p/3535535.html