in this code below:
var a = 1;
var boat = { a:2,
innerBoat: {a:3,
print(){console.log(a);},
},
In javascript, an object
really is nothing more than a collection of data, like a dictionary in many other languages.
var boat = new Object();
just creates an empty object, as if you did var boat = {};
If you're looking for something more like , you may try using ES6 classes
var a = 0
class Boat {
constructor() {
this.a = 1;
}
print() {
console.log(this.a);
}
}
var boat = new Boat()
boat.print(); //output: 2
i don't understand why console.log(a); in print method returns the value 1.
It logs the value of the variable a
.
The properties of the various objects around it which also have the name a
are not variables. They can only be referenced as properties of an object.
const a = 1;
const object = {
a: 2
};
console.log(a);
console.log(object.a)
See also How does the “this” keyword work? for how to access the property of an object that the method you are calling is attached to.
Also, does the curly braces {} of the object referenced by boat creates a new private execution context in the stack at runtime ?
No.