我只是在脑海中对oop javascript中的锁定/修复方法感到好奇。这是一个例子:
function Counter() {
this.count = 0;
this.increaseCount = function() {
this.count++;
}
this.displayCount = function() {
console.log(this.count);
}
}
var counter1 = new Counter();
counter1.increaseCount = function() {
this.count += 2;
}
counter1.increaseCount();
counter1.displayCount(); // 2
如何锁定/修复方法,以便实例无法更改?在示例中我想锁定增加方法总是添加一个。
编辑:我认为它与只读属性不同,因为它是属性。我非常好奇javascript中的方法锁定/修复。即便我使用
Object.defineProperty(Counter.prototype, 'increaseCountt', {
get: function() { this.count++; },
writtable: false
});
我把它称为“counter1.increaseCountt”而不是“counter1.increaseCountt()”因为它不是方法。
当我在创建这样的实例后使用Object.freeze:
var counter1 = new Counter();
Object.freeze(counter1);
计数结果始终为零。