Я играю с классами ES6 и недоступными для записи свойствами. В качестве примера у меня есть следующий код. Я запускаю его под версией узла v9.9.0.
Crash = class Crash {
constructor() {
Object.defineProperty(this, 'test', {
enumerable: true,
value: 100
});
}
setTest(val) {
this.test = val;
}
};
c = new Crash;
c.test = 10; // happens silently
console.log(c); // displays Crash { test: 100 }
// so it didn't change
c.setTest(20); // Throws a typeError
// TypeError: Cannot assign to read only property 'test' of object '#<Crash>'
Таким образом, кажется, что если свойство экземпляра, доступное только для чтения, установлено вне экземпляра, присвоение игнорируется; если установлено внутри экземпляра, это TypeError.
Это ожидаемое поведение? Я не могу найти это нигде документировано.
Object.define Property()
-> Доступный для записи атрибут - person Andreas   schedule 26.03.2018