0%

手写call

1
2
3
4
5
6
7
8
9
10
11
Function.prototype._call=function(context=window,...args){//如果没有传入对象,则会默认this指向window
if(typeOf context !=='function'){
throw Error('Type Error')
}
const fn=Symbol('thisObj');
context[fn]=this;//给目标对象增加一个属性,并且将this赋给该属性
let res=context[fn](ars);//通过临时属性调用该函数并返回结果
delete context[fn];//删除该临时属性
return res;

}