Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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
Javascript Rhino从脚本中获取价值,包括原型链_Javascript_Prototype_Rhino - Fatal编程技术网

Javascript Rhino从脚本中获取价值,包括原型链

Javascript Rhino从脚本中获取价值,包括原型链,javascript,prototype,rhino,Javascript,Prototype,Rhino,我正在使用JavaRhino,我有一个Scriptable或ScriptableObject 我想从这个对象中检索一个值,但是这个值并不直接在这个对象中,而是在对象的原型链中的某个地方 因此,基本上我想在java代码中执行object.get(“key”,object),但如果原型链中不存在值,则返回该值 此get方法的文档说明: 请注意,此方法预计不会遍历原型链 但不幸的是,它没有说这是哪种方法 我可以编写自己的代码: 检查对象 如果未找到:请转到其原型 重复此操作,直到找到值或不再存在原型

我正在使用JavaRhino,我有一个
Scriptable
ScriptableObject

我想从这个对象中检索一个值,但是这个值并不直接在这个对象中,而是在对象的原型链中的某个地方

因此,基本上我想在java代码中执行
object.get(“key”,object)
,但如果原型链中不存在值,则返回该值

此get方法的文档说明:

请注意,此方法预计不会遍历原型链

但不幸的是,它没有说这是哪种方法

我可以编写自己的代码:

  • 检查对象
  • 如果未找到:请转到其原型
  • 重复此操作,直到找到值或不再存在原型
但我想知道。。。犀牛身上不应该有这样的方法吗

这个方法在哪里?

你试过这个吗

objArray = Object.getOwnPropertyNames(scriptableObject.prototype);
for(var i = 0; i < objArray.length; i++){
if(objArray[i] == "whateverProperty")
log(i + " " + scriptableObject.prototype[i]);
}
objArray=Object.getOwnPropertyNames(scriptableObject.prototype);
for(var i=0;i

我总是这样检查对象的原型

最后我自己实现了这个函数。现在看起来是这样的:

private Object getRecursive(Scriptable context, String name, Scriptable rootScope) {
    Object result;
    do {
        result = context.get(name, rootScope);
        context = context.getPrototype();
    } while (result == UniqueTag.NOT_FOUND && context != null);
    // continue as long as the result is NOT_FOUND and there is another parent prototype
    return result;
}

它在给定的
上下文
对象及其父对象
原型
中循环,直到找到请求的值或不再有父原型。

我问的是
Java
-code。这看起来像是
JavaScript
。但如果这毕竟是Java,那么它有几个错误。。。