OOP Javascript中的锁特权方法

时间:2018-05-25 18:20:04

标签: javascript object

我只是在脑海中对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);

计数结果始终为零。

0 个答案:

没有答案