Javascript Rhino JS解释器与SpiderMonkey解释器-不同的返回值
我使用了两种不同的Javascript解释器——Rhino和SpiderMonkey through terminal。因此,当我想对某个对象调用toString()和valueOf()方法时,我会得到不同的结果,这取决于解释器。像这样: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
**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()格式化为对象文本