Function.prototype.myCall = function(obj,...args) {
obj = obj || window;
let key = Symbol("key");// 生成唯一的key值,防止覆盖原有的key值。
obj[key] = this; //这里的this指向调用myCall方法的函数,有点绕。将this指向传进来的第一个参数
let result = obj[key](...args);
delete obj[key];// 删除多余的属性
return result; //返回执行结果
}
function foo(age) {
console.log(this.name,age);
}
foo.myCall({
name: "jack"},18);
call方法的实现
猜你喜欢
转载自blog.csdn.net/qq_42931285/article/details/126724010
今日推荐
周排行