如何知道对象的父链?

时间:2015-07-22 10:57:27

标签: javascript

假设我有一个对象,这是另一个对象的属性,我可以找到父对象吗?

A[a] = o

我有o,如何获取A?此外,如果AB的属性,如何找到链?

1 个答案:

答案 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));




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