きれいな方法ではありません...
Foo = function (value){
this.value = value;
};
独自のオブジェクトの toString 関数をオーバーライドします。
Foo.prototype.toString = function( ){ return this.value.toString(); }
2 つのテスト オブジェクトの作成:
foo1 = new Foo(1);
foo2 = new Foo(1);
オブジェクトの値が文字列または数値の場合、オブジェクトを空の文字列に追加することで、JavaScript エンジンを使用してオブジェクトを文字列に変換できます。
alert( ""+foo1 === ""+foo2 ); //Works for strings and numbers
同じことですが、よりクリーンです:
alert( foo1.toString() === foo2.toString() ); //Works for strings and numbers
オブジェクトの値が数値のみの場合は、単項 + 演算子を使用してオブジェクトを数値に変換できます。
alert( +foo1 === +foo2 ); //Works for numbers
ただし、toString を上記のように定義することと、equals の両方を定義することをお勧めします。
Foo.prototype.equals=function(b){return this.toString() === b.toString();}
そして、次のように呼び出します。
alert ( foo1.equals(foo2) );
toString を定義したので、次のことができます。
alert(foo1); // Alerts the value of foo1 instead of "[Object object]"
alert("foo1: " + foo1); // Alerts "foo1: 1". Useful when debugging.