While playing around with a simple Javascript Object Initializer example, I could not find an explanation while the following code:
const obj = {
self: this
};
console.log(obj);
would lead an Error: Maximum call stack size exceeded
?
Meanwhile, a slightly different but may look similar initializer block as follows:
const obj = {
self: obj
};
console.log(obj);
would lead an Error: Cannot access uninitialized variable.
while the following example using method initializers works perfectly fine:
const obj = {
name: 'Bob',
a() {
return obj.name;
},
b() {
return this.name;
},
};
console.log(obj.a());
console.log(obj.b());
Can you elaborate on the object initialization process and why the language allows the under initialization object and its this
references usage inside method initializers and not in property values?