我使用的是Java,我有一个Scriptable
或ScriptableObject
。
我想从这个对象中检索一个值,但是这个值不是直接在这个对象中,而是在对象的原型链中。
因此,基本上我希望在java代码中执行object.get("key", object)
,但是如果这个对象中不存在原型链,则返回它的值。
这个get方法的文档声明:
请注意,此方法不会遍历原型链。
但不幸的是它并没有说明这是哪种方法.
我可以编写自己的代码:
但我想知道..。难道不应该在犀牛里有这样的方法吗?
这种方法在哪里?
发布于 2017-02-24 08:57:52
最后,我自己实现了这个函数。现在看起来是这样的:
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;
}
它循环遍历给定的context
对象及其父prototypes
,直到它找到所请求的值或没有更多的父原型。
发布于 2017-02-22 23:29:57
你试过这个吗?
objArray = Object.getOwnPropertyNames(scriptableObject.prototype);
for(var i = 0; i < objArray.length; i++){
if(objArray[i] == "whateverProperty")
log(i + " " + scriptableObject.prototype[i]);
}
这就是我总是检查对象的原型的方式。
https://stackoverflow.com/questions/42131159
复制相似问题