Как я могу отключить доступ к свойству объекта? JS - PullRequest
0 голосов
/ 26 апреля 2020

как я могу отключить доступ к свойству объекта в JavaScript? отключить чтение свойства

    let obj = {
       name: "karl"
    }

    Object.DefineProperty(obj,'name',{
       enumerable: false, 
       writable: false,
       configurable: false
    }

    console.log(obj.name) // karl


Моя цель - получить доступ к свойству (имени) через метод get. Я хочу заменить собственный доступ к свойству с помощью get, а также присвоения, которое проходит через пользовательский набор

пример

    let obj = {
       name: "karl",
       get getname()
       {
            return this.name + 2;
       }
    }

    console.log(obj.name) // karl2

, если у get есть имя свойства equals это вызывает ошибку, которую я не могу получить до go через get.

Object.defineProerty не имеет свойства чтения

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Собственные функции set и get могут быть перегружены с помощью Object.defineProperty

const obj = {}
Object.defineProperty(obj, 'name', {
  enumerable : false,
  configurable : false,
  set: function (v){name=v;},
  get: function (){return name+2;}
});
obj.name="karl";
console.log(obj.name); // karl2
console.log(obj);      // {} name will not be shown

Надеюсь, это поможет вам

0 голосов
/ 26 апреля 2020

Вам необходимо сохранить существующее значение, а затем перенастроить свойство для получения:

const obj = {
  name: "karl"
}
const origName = obj.name;
Object.defineProperty(obj, 'name', {
  enumerable: false,
  configurable: false,
  get() {
    return origName + 2;
  }
});

console.log(obj.name) // karl
...