他其实和call差不多只不过是参数变了,话不多说直接看代码
unction.prototype.textApply= function(context){
//context有值得话就是a.call(foo)//代表context==foo
context = context || window
//这个是this没有改变函数作用域的 a.call(foo)这个this代表的是a
context.invokFn= this
let result
//对参数进行判断
if(arguments[1]){
result = context.invokFn(...arguments[1])
}else{
result = context.invokFn()
}
//销毁调用函数,以免作用域污染
Reflect.deleteProperty(context,'invokFn')
return result
}