2019-11-17

var obj = {
   name:'赵宇',
   say:function(a){
       console.log(this.name,a)
   }
}
var skill = {
    name:'张文波'
}
//封装call
 Function.prototype.myCall = function(obj,...argu){
     var newobj = obj||window;
     var fnName = Symbol(this.name);
     newobj[fnName] = this; 
    var val = newobj[fnName](...argu);
     delete newobj[fnName];
     return val;
 }
 obj.say.myCall(skill,'臭傻子')
//封装apply
 Function.prototype.myApply = function(obj,argu){
     var newobj = obj||window;
    var fnName = Symbol(this.name);
     newobj[fnName] = this;
     var val = newobj[fnName](...argu);
     delete newobj[fnName];
     return val;
 }
obj.saymyApply(skill,'大傻子')
//封装bind
Function.prototype.mybind = function(obj,...argu){
    var that = this;
    return function(){
        var all = argu.concat(...arguments);
        that.apply(obj,all)
    }
}
obj.say.mybind(skill,'臭傻子')()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容