自定义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指向objobj.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对象赋值为globalThisif (obj === undefined || obj === null) {obj = globalThis;}//为obj添加临时方法obj.item = Fn;//执行方法let reulst = obj.itemargs);//删除属性delete obj.item;//返回结果return result;}