問題
function MyClass() {}
MyClass.prototype.x = 1;
var obj = new MyClass();
obj.x //=> 1
obj.x = 10;
obj.x; //=> 10
Object.freeze(obj);
obj.x = 100
obj.x //=> ?
var obj2 = new MyClass();
obj2.x //=> 1
obj2.x = 10;
obj2.x //=> ?
答え
- プロトタイプ継承元も不変にしたければ、継承元に対して明示的に行う必要がある
function MyClass() {}
MyClass.prototype.x = 1;
var obj = new MyClass();
obj.x //=> 1
obj.x = 10;
obj.x; //=> 10
Object.freeze(obj);
obj.x = 100
obj.x //=> 10
var obj2 = new MyClass();
obj2.x //=> 1
obj2.x = 10;
obj2.x //=> 10