I have this….
function MyFunction() {
var myVar = "I think I am encapsulated";
this.getMyVar = function() {
return myVar;
}
}
var myProperty = new MyFunction();
console.log(myProperty.getMyVar());
myProperty.myVar = "you're not encapsulated";
console.log(myProperty.getMyVar());
It outputs: “I think I am encapsulated twice”. Why? I did not think this was a closure…
The closure is around the “getMyVar” function. The variable “myVar” inside the constructor is a local variable, and not visible outside the function except as the return value from “getMyVar”.
Setting a “myVar” property on the object does just that, but the “getMyVar” function is not returning a property of an object; it’s returning the value of the local variable in the closure.