在嵌套对象中访问parent的属性

时间:2013-12-10 20:14:07

标签: javascript

我正在重构一些JS代码,需要访问像

这样的对象
Object1.Object2.IsValid();

这就是我现在所拥有的。

function _Object1(object) {

    this._object1 = object;

    this.Object2= new _Object2();

    function IsValid() {
        // tests here
    }
}

function _Object2()
{
    function IsValid() {
        // tests here but needs to use Object1 property above.
    }
}

只有问题在于,我不知道如何在不传递任何参数的情况下访问Object2中的Object1。在Object1中嵌套Object2,也许?

编辑:我想在JS中实现OOP,就像重新发明轮子一样,但是现在想尝试一下:)

我将用OOP来解释这个问题:

我有一个班级_Object1,它有一个方法IsValid()_Object1还有一个属性Object2,其类型为_Object2

现在,_Object2也有名为IsValid()的方法。但是这里有一个问题,_Object2.IsValid需要_Object1的值来进行测试。

如果我这样做以上代码:

var Object1 = new _Object1();

我可以简单地调用Object1.Object2.IsValid()来获得结果。不是吗?

免责声明:我现在一直在使用JS,但从来不必涉及这些事情。

2 个答案:

答案 0 :(得分:3)

_Object2它需要的东西:

function _Object1(object) {

    this._object1 = object;

    this.Object2= new _Object2(this);

    function IsValid() {
        // tests here
    }
}

function _Object2(parentObject)
{
    function IsValid() {
        // parentObject refers to the _Object1 that created this object
    }
}

答案 1 :(得分:1)

我认为你所寻找的是不可能的,除非你愿意将数据传递给对象。

仅仅因为您的_Object2实例已在_Object1构造函数中创建,它不会自动引用您的_Object1实例的数据。您必须在构造函数中或通过其他方法告诉_Object2实例_Object1值:

function _Object2(parentObject) { /* ... */ }
// or
_Object2.prototype.setParent = function(parent) { /* ... */}
// or
myObject2.parent = this._object1;
相关问题