Javascript 对象:获取父对象

2022-08-30 02:44:56

我有以下(嵌套)对象:

obj: { subObj: { foo: 'hello world' } };

接下来我要做的是像这样引用子对象:

var s = obj.subObj;

现在我想做的是从变量中获取对对象的引用。像这样:objs

var o = s.parent;

这在某种程度上是可能的吗?


答案 1

另一个对象(父对象)中的嵌套对象(子对象)无法直接从其父对象获取数据。

看看这个:

var main = {
    name : "main object",
    child : {
        name : "child object"
    }
};

如果你问主对象它的子名称是什么(),你会得到它。
相反,你不能反过来做,因为孩子不知道它的父母是谁。
(你可以得到,但你不会得到)。main.child.namemain.namemain.child.parent.name

顺便说一句,函数可能有助于解决此线索。
让我们扩展上面的代码:

var main = {
    name : "main object",
    child : {
        name : "child object"
    },
    init : function() {
        this.child.parent = this;
        delete this.init;
        return this;
    }
}.init();

在函数内部,您可以简单地调用 父对象。
因此,我们直接在对象内部定义属性。
然后(可选)我们可以删除该方法。
最后,我们将主对象作为函数的输出返回。initthisparentchildinitinit

如果你现在试图得到它,你会得到正确的。
这有点棘手,但它工作正常。main.child.parent.name


答案 2

不。没有办法知道它来自哪个对象。

s并且两者都只是对同一对象的引用。obj.subObj

你也可以做:

var obj = { subObj: {foo: 'hello world'} };
var obj2 = {};
obj2.subObj = obj.subObj;
var s = obj.subObj;

现在,您有三个对同一对象的引用 、 和 。它们都不是特别的。obj.subObjobj2.subObjs