js的call()方法

        // ① 当函数中没有this时,call()、apply()和直接执行没有区别
        function fn(){
            console.log("aaa")
        }
        fn()    // aaa
        fn.call()    // aaa     ----fn是函数,函数也是对象,对象调用call()方法
        fn.apply()   // aaa
        // ② call改变this指向,this由原来的指向改为指向小括号内的对象
        function fn(){
            this.a=1;
            this.b=2;
        }
        var obj={};
        fn.call(obj)    // fn()函数执行的时候,this是window,也就是给window添加了两个全局变量。这里用call改变了this指向,this由原来的window指向了obj,也就是说,这里的fn()函数执行的时候,其实是执行了obj.a=1;obj.b=2
        console.log(obj)    // {a: 1, b: 2}
        // ③ call()传参是一个一个地传,apply()是第二个参数为一个数组
        function fn(name,age){
            this.name=name;
            this.age=age;
        }
        var obj={};
        fn.call(obj,"wql",23);
        console.log(obj)    // {name: "wql", age: 23}
原文地址:https://www.cnblogs.com/wuqilang/p/11938667.html