目录
call函数
Function.prototype.mycall = function(){
if(typeof(this) !== 'function'){ //如果调用mycall的不是一个函数
console.log("出错了") //则直接输出错误
}
let oBj = arguments[0] || window //用oBj存放第一个参数,也就是要给谁绑定,如果没有给第一个参数,就默认绑定给window
oBj.test1 = this //给oBj一个方法,这个方法就是要给oBj绑定的函数
let args = Array.from(arguments).slice(1) //将参数转为数组,然后获取除了第一个参数之外的参数
let result = oBj.test1(...args) //调用绑定的函数,传入参数执行
delete test1 //执行完之后删除这个函数
return result //返回结果
}
function test(age){
console.log("我叫"+this.name +",今年"+age+"岁")
}
let obj = {
name:'小明'
}
test.mycall(obj,18)