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