关于手写bind函数和深度比较

深度比较函数 是利用递归 层层比较

function isobj(obj){
    return obj instanceof Object&&obj!=null
}
function iseq(obj1,obj2){
      var  result=true
       if(!isobj(obj1)&&!isobj(obj2)){
           return obj1===obj2
       }
       if(obj1==obj2){
           return result=true
       }
       var keys1=Object.keys(obj1)
       var keys2=Object.keys(obj2)
       if(keys1.length!=keys2.length){
           return result=false
       }
       for(var i in obj1){
           result=iseq(obj1[i],obj2[i])
           if(!result){
               return result
            
           }
       }


     
     return result
}

手写bind函数 考验的是对bind的原理的理解 理解了原理就很好写 理解不了就无从下手

    Function.prototype.bind1=function(){
        var arg=Array.prototype.slice.apply(arguments)
        var first=arg.shift()
        var this_=this
        return function(){
            this_.apply(first,arg)
        }
    }
    function test(){
        console.log(this.name)
    }
    var t=test.bind1(g)
    t()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容