封裝call bind()apply

如何封裝一個函數(shù)達(dá)到call(),bind(),apply()同樣的效果呢?
var obj = {
name: '張三',
age: 24,
fn: function (a, b) {
console.log(this.name, a, b);
}
}
var sc = {
name: '李四',
}

封裝call

Function.prototype.mycall = function (newobj, argus) {
    var newname = Symbol(this.name);
    newobj[newname] = this;
    var val = newobj[newname](...argus);
    delete newobj[newname];
    return val;
}

obj.fn.mybind(sc,'hh','kk');

封裝apply

Function.prototype.myapply = function (newobj, arg) {
    var newname = Symbol(this.name);
    newobj[newname] = this;
    var val = newobj[newname](...arg);
    delete newobj[newname];
    return val;
}
 obj.fn.mybind(sc,【'hh','kk'】);

封裝bind()

Function.prototype.mybind=function(newobj,...arg){
var that=this;
return function(){
    that.myapplay(newobj,arg.concat(...arguments));

 }

}   
 var ss=obj.fn.mybind(sc,'dd');
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容