Can I reference other properties during object declaration in JavaScript? [duplicate]
Solution 1:
No. this
in JavaScript does not work like you think it does. this
in this case refers to the global object.
There are only 3 cases in which the value this
gets set:
The Function Case
foo();
Here this
will refer to the global object.
The Method Case
test.foo();
In this example this
will refer to test
.
The Constructor Case
new foo();
A function call that's preceded by the new
keyword acts as a constructor. Inside the function this
will refer to a newly
created Object
.
Everywhere else, this
refers to the global object.
Solution 2:
There are several ways to accomplish this; this is what I would use:
function Obj() {
this.a = 5;
this.b = this.a + 1;
// return this; // commented out because this happens automatically
}
var o = new Obj();
o.b; // === 6