版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37722811/article/details/84177650
1.自定义Function.prototype.myCall方法,模拟call方法的功能
function sum(){
console.log(this);
}
function fn(){
console.log(this);
}
Function.prototype.myCall = function (context) {
//根据隐含绑定规则,myCall函数的this指向被调用的函数sum
console.log(this);
//将函数体中的this关键字替换成context,并包装成一个立即执行函数,使用eval执行
eval( "(" + this.toString().replace("this","obj") + "()" + ")");
}
var obj = {
name: "Mike"
}
sum.myCall(obj);// 打印的this是被替换后的context对象
运行结果如下: