美文网首页
关于手写bind函数和深度比较

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

作者: infi_ | 来源:发表于2021-04-11 17:06 被阅读0次

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

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()

相关文章

网友评论

      本文标题:关于手写bind函数和深度比较

      本文链接:https://www.haomeiwen.com/subject/umoakltx.html