不是以干净的方式...
Foo = function (value){
this.value = value;
};
覆盖你自己对象的 toString 函数:
Foo.prototype.toString = function( ){ return this.value.toString(); }
创建两个测试对象:
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 又定义一个等于:
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.