对象相等与不相等
看一段代码:
var a =function xx(){ return {xxx:"eee"} }; var c = a(); var b = a(); console.log(c == b) //false
c和b是两个单独的对象,所以不相等
等同于
1 var e = {xxx:"eee"} 2 var f = {xxx:"eee"} 3 console.info(e == f)
但是这种又是相等的
1 var ee = {xxx:"eee"} 2 var ee1 = ee; 3 var ee2 = ee; 4 console.log(ee1 == ee2)
但是这样又不想等了:
console.log({xxx:"eee"} == {xxx:"eee"})
得出结论 引用类型的值 指向同一个堆内存的指针会相等,而就算两个完全相同的对象因为是两个堆内存所以不会相同:
由此得出以下结论:如下代码肯定相等:
1 var ee = {xxx:"eee"} 2 var ee1 = ee; 3 var ee2 = ee; 4 5 ee1.cc = "4444"; 6 console.log(ee1 == ee2);
修改ee1时其实是通过指针修改的 ee ;
坚持下去就能成功