@zlodiak

Почему декоратор не удаляет свойство?

Я создаю экземпляр класса и при помощи декоратора пытаюсь удалить свойство:

function format(target: Object, propertyKey: string) {
  delete this[propertyKey]
}

class User {
  @format
  name: string
  constructor(name: string) {
    this.name = name
  }
  print(): void {
    console.log(this.name)
  }
}

let tom = new User('Tom')
tom.print()


Но в результате обращения к методу print() в консоль всё таки выводится значение свойство name. Объясните пожалуйста как правильно его удалить. Чтобы невозможно было при помощи print() его вывести

DEMO
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 1
@yungvldai
Вы не можете обращаться к this в методе-декораторе, потому что в момент, когда отрабатывает логика, которую вы в ключили в данный метод, по определению нет никаких инстансов класса, а значит и контекстов this этих инстансов. В Вашем примере Вы пытаетесь удалить свойство в строке propertyKey из Window.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы