Javascript Object Literal referring to another property in itself from another property

后端 未结 3 1334
执笔经年
执笔经年 2020-12-07 02:42

I have a object literal:

var obj = {
    a : document.getElementById(\"ex1\"),
    b : obj.a.document.getElementsByTagName(\"div\")
};

I am

相关标签:
3条回答
  • 2020-12-07 02:57

    The modern way to do this is with getter methods:

    let obj = {
      firstName: "A’dab",
      lastName: "Farooqi"
      get fullName() {
        return this.firstName+" "+this.lastName;
      },
    }
    

    So now you can just write obj.fullName - no need for the parentheses on the end.

    0 讨论(0)
  • 2020-12-07 03:03

    When the property b is being defined, obj is not defined yet. One way to get around that problem is to make your property a function so that it's not evaluated until called.

    var obj = {
        a : document.getElementById("ex1"),
        b : function() {
          // This is not evaluated until obj.b() is called
          return obj.a.document.getElementsByTagName("div");
        }
    };
    obj.b();
    

    If you really want it to be a property, you have to do it in two steps as Tomasz Nurkiewicz shows

    0 讨论(0)
  • 2020-12-07 03:15

    You need two steps:

    var obj = {
        a : document.getElementById("ex1")
    };
    
    obj.b = obj.a.document.getElementsByTagName("div")
    

    Or:

    var temp = document.getElementById("ex1")
    var obj = {
        a : temp,
        b : temp.document.getElementsByTagName("div")
    };
    
    0 讨论(0)
提交回复
热议问题