call 干了什么?
- 改变 this 指向
- 让函数执行
<script>
function fn(num1, num2) {
console.log("this----->", this);
return num1 + num2;
}
let obj = {
name: "kaimo313"
};
let res = fn.call(obj, 1, 2);
console.log("res----->", res);
</script>
手写 call
<script>
Function.prototype.kaimoCall = function (content) {
content = content ? Object(content) : window;
content.f = this;
let args = [];
for (let i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}
let res = content.f(...args);
delete content.f;
return res;
};
function fn(num1, num2) {
console.log("this----->", this);
return num1 + num2;
}
let obj = {
name: "kaimo313"
};
let res = fn.call(obj, 1, 2);
console.log("res----->", res);
let res2 = fn.kaimoCall(obj, 1, 2);
console.log("res2----->", res2);
</script>