call
Function.prototype._call = function(targetObject) {
if (typeof targetObject === 'undefined' || targetObject === null) {
targetObject = window
}
targetObject = new Object(targetObject)
const targetFnKey = 'targetFnKey'
targetObject[targetFnKey] = this
const result = targetObject[targetFnKey](...[...arguments].slice(1))
delete targetObject[targetFnKey]
return result
}
apply
Function.prototype._apply = function(targetObject, argsArray) {
if (typeof argsArray === 'undefined' || argsArray === null) {
argsArray = []
}
if (typeof targetObject === 'undefined' || targetObject === null) {
targetObject = window
}
targetObject = new Object(targetObject)
const targetFnKey = 'targetFnKey'
targetObject[targetFnKey] = this
const result = targetObject[targetFnKey](...argsArray)
delete targetObject[targetFnKey]
return result
}
bind
Function.prototype._bind =
Function.prototype._bind ||
function(context) {
if (typeof this !== 'function') {
throw new Error('Function.prototype.bind -not function')
}
var self = this
//預(yù)設(shè)參數(shù)
var args = Array.prototype.slice.call(arguments, 1)
var F = function() {}
F.prototype = this.prototype
var fBind = function() {
var innerArgs = Array.prototype.slice.call(arguments)
var finalArgs = args.concat(innerArgs)
return self.apply(this instanceof F ? this : context, finalArgs)
}
fBind.prototype = new F()
return fBind
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。