Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java运行的JS文件中的Object.keys函数_Java_Javascript_Rhino - Fatal编程技术网

从Java运行的JS文件中的Object.keys函数

从Java运行的JS文件中的Object.keys函数,java,javascript,rhino,Java,Javascript,Rhino,当我试图在作为Java应用程序运行的JavaScript文件中使用Object.keys函数时,我遇到了异常 我想使用JS文件中的一些函数,如下所示: function calculateProductPrice(orderData) { ... k = Object.keys(prices); for (var i = k.length; i > -1; i--) { ...

当我试图在作为Java应用程序运行的JavaScript文件中使用
Object.keys
函数时,我遇到了异常

我想使用JS文件中的一些函数,如下所示:

    function calculateProductPrice(orderData)
    {
        ...
        k = Object.keys(prices);    
        for (var i = k.length; i > -1; i--)
        {
            ...
        }       
        ...     
    }

    var prices = {
             "1":[
                99,
                106,
                113,
               ...
使用此脚本的java代码片段:

Context context = Context.enter();
ScriptableObject  scope = context.initStandardObjects();
FileReader fr = new FileReader("script.js");
context.evaluateReader(scope, fr, "<cmd>", 1, null);
Object orderData = Context.javaToJS(new OrderData(), scope);
scope.put("orderData", scope, orderData);
Object result = context.evaluateString(scope, "calculateProductPrice(orderData)", "<cmd>", 1, null);
Context=Context.enter();
ScriptableObject范围=context.initStandardObjects();
FileReader fr=newFileReader(“script.js”);
evaluateReader(作用域,fr,“,1,null);
Object orderData=Context.javaToJS(new orderData(),scope);
scope.put(“orderData”、scope、orderData);
对象结果=context.evaluateString(作用域,“calculateProductPrice(orderData)”,“”,1,null);
我得到一个例外:

Exception in thread "main" org.mozilla.javascript.EcmaError: TypeError: Cannot find function keys in object function Object() { [native code for Object.Object, arity=1] }
. (<cmd>#11)
    at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3654)
    at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3632)
    at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3660)
    at org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3679)
    at org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3743)
    at org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2247)
    at org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2214)
    at org.mozilla.javascript.gen.c1._c1(<cmd>:11)
    at org.mozilla.javascript.gen.c1.call(<cmd>)
    at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
    at org.mozilla.javascript.gen.c2._c0(<cmd>:1)
    at org.mozilla.javascript.gen.c2.call(<cmd>)
    at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:398)
    at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3065)
    at org.mozilla.javascript.gen.c2.call(<cmd>)
    at org.mozilla.javascript.gen.c2.exec(<cmd>)
    at org.mozilla.javascript.Context.evaluateString(Context.java:1104)
    at net.terraincognita.restapi.service.ScriptEngine.<init>(ScriptEngine.java:65)
    at net.terraincognita.restapi.service.ScriptEngine.main(ScriptEngine.java:94)
Java Result: 1
线程“main”org.mozilla.javascript.EcmaError中出现异常:TypeError:在object function object()中找不到函数键{[object.object的本机代码,arity=1]} . (#11) 位于org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3654) 位于org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3632) 位于org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3660) 位于org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3679) 位于org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3743) 位于org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2247) 位于org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2214) 在org.mozilla.javascript.gen.c1.\u c1(:11) 在org.mozilla.javascript.gen.c1.call()上 位于org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97) 在org.mozilla.javascript.gen.c2.\u c0(:1) 在org.mozilla.javascript.gen.c2.call()上 位于org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:398) 位于org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3065) 在org.mozilla.javascript.gen.c2.call()上 在org.mozilla.javascript.gen.c2.exec()上 位于org.mozilla.javascript.Context.evaluateString(Context.java:1104) 位于net.terraincognita.restapi.service.ScriptEngine.(ScriptEngine.java:65) 位于net.terraincognita.restapi.service.ScriptEngine.main(ScriptEngine.java:94) Java结果:1
Rhino中没有为对象类定义此方法

各国:

犀牛含有

  • JavaScript 1.7的所有功能
Mozilla JavaScript文档说明如下:

在JavaScript 1.8.5中引入


同一个Object.keys文档包含了一个如何将其添加到以前版本的JavaScript中的示例。

Rhino中没有为对象类定义此方法

各国:

犀牛含有

  • JavaScript 1.7的所有功能
Mozilla JavaScript文档说明如下:

在JavaScript 1.8.5中引入

同一个Object.keys文档包括如何将其添加到以前版本的JavaScript中的示例。

Object.keys()
是ECMAScript 5的一项功能

另一方面,犀牛

所以,不幸的是,你被困在:

for (var i in prices) {
  if (prices.hasOwnProperty(i)) {
    // do stuff
  }
}
Object.keys()
是ECMAScript 5的一项功能

另一方面,犀牛

所以,不幸的是,你被困在:

for (var i in prices) {
  if (prices.hasOwnProperty(i)) {
    // do stuff
  }
}

您使用的运行时版本在我看来不支持Object.keys,请记住它是在规范的1.8.5版本中添加的:您使用的运行时版本在我看来不支持Object.keys,请记住它是在规范的1.8.5版本中添加的:我看不到hasOwnProperty()方法我也看不到方法hasOwnProperty()。