推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
sivacohan

js对象怎么比较?

  •  
  •   sivacohan · Jul 15, 2013 · 4836 views
    This topic created in 4859 days ago, the information mentioned may be changed or developed.
    a = {'a':1}
    b = {'a':1}

    a === b 这个是false

    对于复杂对象的比较是比较他们在内存里是不是同一地址吗?
    这个地方应该看点什么。或者查点什么?

    @Mutoo
    8 replies  •  1970-01-01 08:00:00 +08:00
    cmonday
    cmonday
    Jul 15, 2013❤️1
    1
    是的。只有两个内存地址一致的对象才会在`===`判断中得到true

    如果需要判断内部的属性是否一致,只能做递归比较了,比如 underscore 的 isEqual 方法 http://underscorejs.org/#isEqual https://github.com/jashkenas/underscore/blob/master/underscore.js#L844-L938
    sivacohan
    sivacohan
    OP
    Jul 15, 2013
    2
    @cmonday 谢谢,有一个需求是比较两个object的变化。看起来只能自己动手实现一个了。
    coolicer
    coolicer
    Jul 15, 2013
    3
    对象的比较是引用的比较。
    bakac
    bakac
    Jul 15, 2013
    4
    比较字面量 就是toString 之后的
    darasion
    darasion
    Jul 15, 2013
    5
    多数语言都会得到这个结果吧。不光js
    Golevka
    Golevka
    Jul 15, 2013
    6
    @bakac bakac --- An optimizing compiler for baka, written in baka
    miniwade514
    miniwade514
    Jul 18, 2013
    7
    a,b 只是两个引用,比较它们不能达到你的目的。
    Ricepig
    Ricepig
    Jul 18, 2013
    8
    转json以后再比字符串,哈哈哈哈
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5326 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 01:25 · PVG 09:25 · LAX 17:25 · JFK 20:25
    ♥ Do have faith in what you're doing.