I am trying to do something like this:
var obj = { a: 5, b: this.a + 1 }
(instead of 5 there is a function which I don't want to execute twice that returns a number)
I can rewrite it to assign obj.b
later from obj.a
, but can I do it right away during declaration?
The Object.assign() method copies all enumerable own properties from one or more source objects to a target object. It returns the modified target object.
Objects in JavaScript are passed by reference. When more than one variable is set to store either an object , array or function , those variables will point to the same allocated space in the memory. Passed by reference.
You cannot. Property keys are unique. Follow TravisJ 's advice. You might want to look up the term 'multimap', too.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With