Function.prototype.myCall = function (context) {
var c = context || window
var args = Array.from(arguments).slice(1)
c.___fn = this
var result = c.___fn(...args)
delete c.___fn
return result
}
复制代码
2、apply
Function.prototype.myApply = function (context) {
var c = context || window
c.__fn = this
var args = Array.from(arguments)[1]
var result = args ? c.__fn(...args) : c.__fn()
delete c.__fn
return result
}
复制代码
3、bind
Function.prototype.myBind = function (context) {
var _this = this
var oldArgs = Array.from(arguments).slice(1)
returnfunction () {
var finArgs = oldArgs.length ? oldArgs : Array.from(arguments)
return _this.apply(context, finArgs)
}
}
复制代码