永发信息网

JS对象之间的比较是怎么比较的

答案:3  悬赏:50  手机版
解决时间 2021-12-16 00:08
JS对象之间的比较是怎么比较的
最佳答案
今天看红宝书,里面讲到相等操作符,也就是==和===
“如果两个操作数都是对象,则比较他们是不是同一个对象,如果两个操作数都指向同一个对象,则相等操作符返回true,否则,返回false”。
我做了一个例子
  • function person() {  
  • // define some peroperty here  
  • }  

  • var p1 = new person();  
  • var p2 = new person();  

  • console.log(p1 == p2); //false  
    按照他说的指向同一个对象了啊,为什么返回的是false呢?
    然后我又查了查,发现有人这样说
    “如果等号两边是对象或者对象的函数,则比较地址是否相等(即判断两者是否引用的同一对象)”
    可是这里的地址指什么呢?
    然后 有综合了一些查询结果,发现这里的地址应该指的是内存地址。“每生成一个实例就会重新占用一些内存”,所以两次生成的person占用的是不同的内存地址。所以返回结果是false。
    那这样的话怎么样才能用==返回true呢?我又查了一下,没有找到特别合适的例子,指找到一个用prototype定义函数可以得到== 返回true的效果
  • function person(name) {  
  • this.name=name;  
  • }  

  • var p1 = new person("p1");  
  • var p2 = new person("p2");  

  • console.log(p1 == p2); //false  

  • person.prototype.sayHi = function() {  
  • // do sayHi here  
  • }  

  • console.log(p1.sayHi() == p2.sayHi()); //true  
  • console.log(p1.sayHi() === p2.sayHi()); //true
  • 全部回答
    var array1 = [ {"num": "a "  },{"num": "b" }]; var array2 = [ {"num": "a ","name": "t1 " }, {"num": "b","name": "t2"}, {"num": "c " ,"name": "t3 "}]; var result = []; for(var i = 0; i < array2.length; i++){     var obj = array2[i];     var num = obj.num;     var isexist = false;     for(var j = 0; j < array1.length; j++){         var aj = array1[j];         var n = aj.num;         if(n == num){             isexist = true;             break;         }     }     if(!isexist){         result.push(obj);     } } console.log(result);
    这个不好比较,对象在JavaScript中算是引用类型。如果是简单的对象,可以转为字符串进行比较,如果很复杂就不行。
    我要举报
    如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
    大家都在看
    浏览器开着的时候经常有提示音,怎么关掉
    用一块12v36a的电瓶带动一台12v100w的高压水
    做销售工资一般有多少?
    雪佛兰赛欧音响有个不响什么原因左侧不响声调
    高考唱风萧瑟应该穿什么样的衣服
    那年花开月正圆春杏是谁演的
    哺乳动物平滑肌细胞的遗传物质在存在方式有何
    磷酸一铵每亩施肥多少?需不需要其他肥料
    看图猜成语二一个中字一个会元一个解元个状元
    求《迷婚计:前妻,从了我吧》全文+番外的TXT无
    玻璃杯上贴的不干胶遇热那层纸会溶解掉,然后
    深圳58同城学校招聘厨师
    里约大冒险中的“it'sajungleouthere”
    空压机3立方米每分钟,0.7-0.86Mpa,请问电机
    安慕希打开两天还能喝吗?
    推荐资讯
    日本将棋的“将”怎么读啊
    大三匹空调怎么接线
    茂名有光纤乘包工程吗
    丹东市振兴区光大银行丹东分行营业部地址有知
    无限极洗面奶的含量是什么
    单选题在中国大地上最早建立起来的工厂是A.外
    德国马牌轮胎:215、502R1795WEXTRALOADRADIA
    用易语言编程好吗?
    晃州派出所地址有知道的么?有点事想过去!
    嵇康,字叔夜,谯国铚人也。康早孤,有奇才,
    赵简子①有两白骡而甚爱之。阳城胥渠②住广门
    邓妍冰这个名字好么?我现在的名字叫邓倩,我
    正方形一边上任一点到这个正方形两条对角线的
    阴历怎么看 ?