Skip to content Skip to sidebar Skip to footer

Referencing Other Properties In {} Object Creation

Possible Duplicate: Self-references in object literal declarations How do I do the following: var object = { alpha: 'one', beta: **alpha's value** } without splitting t

Solution 1:

You can't, as noted. The closest equivalent is:

varobject = new (function()
{
    this.alpha = 'one';
    this.beta = this.alpha;
})();

This uses a singleton instance created from an anonymous function. You can also declare private fields with var.

Solution 2:

You can't, object literal syntax just doesn't support this, you'll have to create a variable first then use it for both, like this:

varvalue = 'one';
varobject = {
  alpha: value,
  beta: value
};

Or...something entirely different, but you can't reference alpha when doing beta, because neither property has been created yet, not until the object statement runs as a whole is either accessible.

Solution 3:

You cannot do that with {} object creation.

Solution 4:

Another idea for a way to create that object, without cluttering the scope with any new variables:

var lit = function(shared) {
return {
    alpha: shared.v1,
    beta: shared.v2,
    gamma: "three", 
    delta: shared.v1

};
}(
 {
    v1: "one",
    v2: "two",
 }
);

One of those statements you're not sure how to indent....

Post a Comment for "Referencing Other Properties In {} Object Creation"