深度比较函数 是利用递归 层层比较
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()