简体   繁体   English

Javascript嵌套和调用对象

[英]Javascript Nesting and Recalling Objects

I know I can nest objects in objects and recall to them easily example: 我知道我可以将对象嵌套在对象中并轻松地调用它们,例如:

var ex1 = {
    data1: 1,
    dataOb: {
        data1: 2,
        data2: ex1.data1 + ex1.dataO.data1,
    }
}

And I can do console.log(ex1.dataO.data1) but I can't recall from dataOb to ex1.data1 example: data2: ex1.data1 + dataOb.data1 doesn't work, so my question is it possible to recall from DataOb to parental object ex1 ? 而且我可以做console.log(ex1.dataO.data1)但是我无法从dataOb调用到ex1.data1示例: data2: ex1.data1 + dataOb.data1不起作用,所以我的问题是是否可以调用从DataOb到父母对象ex1?

No. At the time that you're defining data2 , you're still in the middle of defining ex1 . 否。在定义data2 ,您仍在定义ex1的中间。 That is, it doesn't really exist yet. 也就是说,它实际上还不存在 You're trying to access it before you've even finished defining it. 您甚至在完成定义之前就尝试访问它。

If I understand you question rightly... do you want to use ex1.data1 in the same sentence you're creating the whole object? 如果我了解您的问题是正确的...您是否要在创建整个对象的同一句子中使用ex1.data1

This isn't ever possible! 这是不可能的!

You want to access to a reference that hasn't been created yet. 您要访问尚未创建的引用。

It's like doing this: 就像这样:

var a = a + 1;

How do you set the value of a plus 1 if a isn't declared already?! 如何设置的值a加1,如果a尚未宣布?

You can do something like this: 您可以执行以下操作:

var ex1 = {
  data1: 1,
  dataOb: {
    data1: 2,
    data2: 4
  },
  getSum: function () {
    var sum = 0;
    for ( var i = 0; i < arguments.length; i++ ) {
      sum += arguments[i];
    }

    return sum;

  }
};

console.log(ex1.getSum(ex1.data1, ex1.dataOb.data1)); // should log 3

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM