自定义call方法
//Fn:要执行的函数,obj:函数中this的指向,args:剩余参数
function call(Fn, obj, ...args) {
//判断
if (obj === undefined || obj === null) {
obj = globalThis; //全局对象 globalThis:es11新增的特性,用来指向全局对象
}
//为 obj 添加临时的方法
//因为temp和Fn一样,所以通过obj.temp()执行时,函数中的this指向obj
obj.temp = Fn;
//通过obj.temp()调用函数,所以this指向obj对象
let result = obj.temp(...args);
//在删除
delete obj.temp;
//返回执行的结果
return result;
}
自定义apply方法
function apply(Fn, obj, ...args) {
//如果obj为undefined或者null,obj对象赋值为globalThis
if (obj === undefined || obj === null) {
obj = globalThis;
}
//为obj添加临时方法
obj.item = Fn;
//执行方法
let reulst = obj.itemargs);
//删除属性
delete obj.item;
//返回结果
return result;
}