假设我有一个对象,这是另一个对象的属性,我可以找到父对象吗?
A[a] = o
我有o
,如何获取A
?此外,如果A
是B
的属性,如何找到链?
答案 0 :(得分:3)
你不能。考虑:
foo = {}
A.x = foo
B.y = foo
谁是父母" foo?
然而,如果所有" root"对象是已知的,你可以找到"父母"通过递归遍历对象树:
scope = {}
foo = {"str": "hey"}
scope.A = { x: 1, y: { parent: foo }}
scope.B = { x: 5, zz: foo }
function findParent(what, where) {
if(typeof where !== "object")
return;
var found;
Object.keys(where).some(function(k) {
if(where[k] == what)
return found = where;
return found = findParent(what, where[k]);
})
return found;
}
par = findParent(foo, scope);
document.write(JSON.stringify(par));

此代码可以扩展为查找所有"父母"而不是第一个。