2017-07-28 106 views
1

我有这个测试的代码片段:.toLocaleString在犀牛引擎

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); 
Object o = engine.eval("var i = 1000; i.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' });"); 
System.out.println(o); 

当我开始测试,我得到这样的结果:

1000 

所以,莫非,是犀牛不能执行.toLocaleString()函数?还是我必须做一些额外的工作才能让它运行?我在谷歌搜索,但没有找到答案...

+0

你在跑哪个版本的nashorn? – evolutionxbox

+0

我使用版本1.8.0_141 – Chris

回答

2

看看源代码似乎它不支持toLocaleString函数。 当您拨打功能时,Nashorn会重定向jdk.nashorn.internal.objects.NativeNumber.toLocaleString(Object)上的呼叫。此方法只是简单地将输入对象(即数字)转换为字符串表示形式。下面是代码:

public static String toLocaleString(Object self) { 
    return JSType.toString(getNumberValue(self)); 
} 

这是我刚刚看了一下版本:

C:\ java的\ BIN> JJS -version

犀牛1.8.0_121