Javascript Rhino JS解释器与SpiderMonkey解释器-不同的返回值

Javascript Rhino JS解释器与SpiderMonkey解释器-不同的返回值,javascript,Javascript,我使用了两种不同的Javascript解释器——Rhino和SpiderMonkey through terminal。因此,当我想对某个对象调用toString()和valueOf()方法时,我会得到不同的结果,这取决于解释器。像这样: **Rhino** var f={x:10} f.toString() result [object Object] f.valueOf() result [object Object] **SpiderMon

我使用了两种不同的Javascript解释器——Rhino和SpiderMonkey through terminal。因此,当我想对某个对象调用toString()和valueOf()方法时,我会得到不同的结果,这取决于解释器。像这样:

**Rhino** 
  var f={x:10}  f.toString() result [object Object] 

                f.valueOf() result [object Object] 


**SpiderMonkey**
  var f={x:10}  f.toString() result  "[object Object]" //in quotes 

                f.valueOf() result ({x:10})

我知道Rhino是用Java编写的,SpiderMonkey是用C编写的。为什么会得到不同的结果?

返回值是相同的,但显示方式不同。Rhino正在打印
result.toString()
其中
result
是刚刚计算的表达式的值。在这两种情况下,您得到相同的结果,因为
f.valueOf()==f
所以
f.valueOf().toString()==f.toString().toString()

SpiderMonkey似乎正在打印
result.toSource()
,它在字符串周围加引号,并将
f.valueOf()格式化为对象文本