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