function isObjectValueEqual(a, b) { var aProps = Object.getOwnPropertyNames(a); var bProps = Object.getOwnPropertyNames(b); if (aProps.length != bProps.length) { return false; } for (var i = 0; i < aProps.length; i++) { var propName = aProps[i]; if (
function isObjectValueEqual(a, b) { if(typeof a == 'number' && typeof b == 'number'){ return a == b } var aProps = Object.getOwnPropertyNames(a); var bProps = Object.getOwnPropertyNames(b); if (aProps.length != bProps.length) { return false; } for
1.in运算符 (属性名 in 对象) 情况1:对象自身属性 var obj={a:1}; "a" in obj//true 情况2:对象继承的属性 var objA={a:1}; var objB=Object.create(A) "a" in objB //true 总结:in运算符 不仅能识别对象自身的属性 也能识别继承的属性 2.hasOwnProperty 只能识别对象自身的属性 var obj={a:1}; obj.hasOwnProperty(&qu