apply 和 call方法的作用:专门用于修改方法内部的this
例
function test() {
console.log(this);
}
var obj = {"name" : "hjy"};
window.test.call(obj);
1.通过window.test 找到test方法
2.通过 apply(obj) 将找到的 test方法内部的 this 修改为自定义的对象
3.最后 打印出 {“name”:“hjy”}
格式:
apply(对象, [数组])
call(对象, 参数1, 参数2, 参数3, ...)
例:
function sum(a, b) {
console.log(this);
console.log(a + b);
}
var obj = {"name" : "hjy"};
window.sum.apply(obj, [2, 3]); //打印 {name: "hjy"} 5
window.sum.call(obj, 2, 3); //打印 {name: "hjy"} 5
1.通过window.sum 找到 sum 方法
2.通过 apply(obj) 将找到的 test方法内部的 this 修改为自定义的对象
3.将传入数组中的元素 或 每个传入的参数 依次取出, 传递给形参
应用:将数组转换为伪数组
var arr = [1,2,3,4,5];
var obj = {};
[].push.apply(obj, arr);
1.通过[].push 找到 数组的push 方法
2.通过 apply(obj) 将找到的 push 方法内部的 this 修改为自定义的对象
3.将传入数组中的元素 依次取出, 传递给形参
简单的说,就是将 arr 里的每个元素 push 到了 obj 身上,打印 obj 如下: