Блокировать привилегированный метод в ООП Javascript - PullRequest
0 голосов
/ 25 мая 2018

Мне просто любопытно задать этот вопрос в моей голове о методе блокировки / исправления в oav 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);

результат счета всегда равен нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...