2012-12-03 7 views

答えて

49

あなたは=====を使用します。

var thesame = obj1===obj2; 

From the MDN :

両方のオペランドがオブジェクトである場合は、JavaScriptがオペランドが メモリ内の同じオブジェクトを参照するとき等しい内部 参照を比較します。

13

等価演算子と厳密な等価演算子は、2つの変数が同じオブジェクトを指しているかどうかを示します。

foo == bar 
foo === bar 
3

可能なアルゴリズム:

Object.prototype.equals = function(x) 
{ 
    var p; 
    for(p in this) { 
     if(typeof(x[p])=='undefined') {return false;} 
    } 

    for(p in this) { 
     if (this[p]) { 
      switch(typeof(this[p])) { 
       case 'object': 
        if (!this[p].equals(x[p])) { return false; } break; 
       case 'function': 
        if (typeof(x[p])=='undefined' || 
         (p != 'equals' && this[p].toString() != x[p].toString())) 
         return false; 
        break; 
       default: 
        if (this[p] != x[p]) { return false; } 
      } 
     } else { 
      if (x[p]) 
       return false; 
     } 
    } 

    for(p in x) { 
     if(typeof(this[p])=='undefined') {return false;} 
    } 

    return true; 
} 
関連する問題