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}