Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问嵌套对象中父对象的属性_Javascript - Fatal编程技术网

Javascript 访问嵌套对象中父对象的属性

Javascript 访问嵌套对象中父对象的属性,javascript,Javascript,我正在重构一些JS代码,需要访问如下对象 Object1.Object2.IsValid(); 这就是我现在拥有的 function _Object1(object) { this._object1 = object; this.Object2= new _Object2(); function IsValid() { // tests here } } function _Object2() { function IsValid

我正在重构一些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有一段时间了,但从来没有接触过类似的东西。

为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
    }
}
为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
    }
}

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

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

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

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

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

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

我不确定是否有足够的信息来回答你的问题。你到底想干什么?试图访问Object2中的Object1不够具体。你能告诉我们你试过什么吗?这就是我的全部,用我能想到的其他方法更新问题。可以使用闭包+该组合,或者通过实例,经销商的选择。像linstantnoodles一样,我不清楚上下文。您是否正在努力解决执行范围问题?关于这方面有很多很好的文档,我想在这里与大家分享:N.Zakas为Web开发人员编写的专业JavaScript,第3版中的第4章处理范围。此外,您还可以在上找到更多信息。如果你愿意,你可以利用。我不确定是否有足够的信息来回答你的问题。你到底想干什么?试图访问Object2中的Object1不够具体。你能告诉我们你试过什么吗?这就是我的全部,用我能想到的其他方法更新问题。可以使用闭包+该组合,或者通过实例,经销商的选择。像linstantnoodles一样,我不清楚上下文。您是否正在努力解决执行范围问题?关于这方面有很多很好的文档,我想在这里与大家分享:N.Zakas为Web开发人员编写的专业JavaScript,第3版中的第4章处理范围。此外,您还可以在上找到更多信息。如果你愿意,你可以利用它。我完全同意,我不确定它能携带哪些信息。所以这只是普通的编程:。谢谢。我完全同意,我不确定这里面能携带什么信息。所以这只是普通的编程:。谢谢。谢谢,我不想将任何参数传递给Object2,但这似乎会让我省去一些麻烦。谢谢,我不想将任何参数传递给Object2,但这似乎会让我省去一些麻烦。