对象相等与不相等
Posted 专注前端开发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象相等与不相等相关的知识,希望对你有一定的参考价值。
看一段代码:
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 ;
以上是关于对象相等与不相等的主要内容,如果未能解决你的问题,请参考以下文章