function Sun() {
if (typeof Sun.instance === 'object') return Sun.instance;
this.color = 'yellow';
this.isBig = true;
Sun.instance = this;
}
var sun1 = new Sun;
Sun.instance = null; // эта строчка все ломает. Как запретить доступ к изменению свойства?
var sun2 = new Sun;
sun1 === sun2 // false. объекты должны быть равны
const sun = new class { // singleton...
constructor(color, isBig) {
this.color = "yellow";
this.isBig = true;
}
}();
function createSunSingleton() {
var instance; // замыкание...
return function() {
if (typeof instance === "object") return instance;
this.color = 'yellow';
this.isBig = true;
instance = this;
}
}
var Sun = createSunSingleton();
var sun1 = new Sun;
Sun.instance = null;
var sun2 = new Sun;
console.log(sun1 === sun2) // true