首先写一个Call方法函数
function myCall(obj){
注意: 这里需要传入一个实参obj
obj = obj||window
let obj.objFn = this //获取函数
let params = [...arguments].slice(1)//获取第二位开始的形参,若未传入则为空
let result = obj.objFn(...params);//获取函数调用的返回值
delete obj.objFn
return result
}
(1)无形参
测试
const obj1 = {
name: ‘obj1‘,
f1() {
console.log(this);
}
}
obj1.f1.call() //window
实现
obj = obj||window
let params = [...arguments].splice(1)
splice返回截取后的原数组
一个形参:空数组slice(1)以后仍然返回空数组,
多个形参:slice返回截取后的新数组
function myCall(obj){
let UniqueId = Math.random()+‘oo‘
while (obj.hasOwnProperty(UniqueId)) {
UniqueId += ‘00‘
}
}
原文:https://www.cnblogs.com/xjt31/p/14128568.html