Как я могу получить доступ к функции получения и установки объекта? - PullRequest
0 голосов
/ 05 ноября 2019

Один объект имеет свойство с именем password. Это свойство вызывается путем вызова метода set. Затем я определил второй метод установки для того же свойства. Но я хочу, чтобы и первый метод установки и второй метод установки работали. Для этого, как я могу получить доступ к первой функции установки?

//constant code
var obj = {
  get password() {
            return this._password;
        },
  set password(val) {
            this._password = new TextEncoder().encode(val);
        }
}
Object.defineProperty(obj,"password",{set:function(val){
//exectue first setter function of password
//execute second setter
this._password=val;}})

Я могу только изменить код. Я также не могу вносить какие-либо изменения в код.

Как получить доступ к первой функции установки?

1 Ответ

1 голос
/ 05 ноября 2019

Вы можете сохранить исходную версию сеттера, чтобы вызывать ее внутри новой версии:

const originalSetPassword = Object.getOwnPropertyDescriptor(obj, "password").set;
Object.defineProperty(obj, "password", {
  set: function(val) {
    originalSetPassword.call(obj, val);
    this._password=val;
  }
});
...