JavaScript Object Literal Notation Internal Variab

2019-02-27 05:38发布

问题:

This question already has an answer here:

  • Self-references in object literals / initializers 21 answers

I have an array of variables. And I want one variable to equal the previous one. For example:

var myVars = {
    var1: "test",
    var2: var1
};

alert(myVars.var2);

//output: var1 is not defined

Any thoughts? I'm sure this is some sort of variable scope limitation. I would like to hear otherwise. Thanks in advance.

回答1:

You cannot refer to the same object literal in an expression without using a function, I would recommend you to use the equivalent syntax:

var myVars = {};

myVars.var1 = "test",
myVars.var2 = myVars.var1;


回答2:

Or:

var myVar = "test";

var myArr = {
    var1: myVar,
    var2: myVar
}


回答3:

var myVars = {
    var1: "test",
    var2: this.var1
};

perhaps?