【问题标题】:how can i disable access a property of a object ? JS如何禁用访问对象的属性? JS
【发布时间】:2020-08-09 12:33:05
【问题描述】:

如何在 JavaScript 中禁止访问对象的属性? 禁用读取属性

让 obj = { 名称:“卡尔” } Object.DefineProperty(obj,'name',{ 可枚举:假, 可写:假, 可配置:假 } console.log(obj.name) // 卡尔

我的目标是通过 get 访问属性(名称)。 我想用 get 替换属性的本机访问,还有赋值,并通过自定义集

例子

让 obj = { 名称:“卡尔”, 获取名称() { 返回 this.name + 2; } } console.log(obj.name) // karl2

如果 get 具有等于属性的名称,则会导致错误 我无法让它原生地通过 get。

Object.defineProerty 没有属性读取属性

【问题讨论】:

    标签: javascript ecmascript-6 properties


    【解决方案1】:

    您需要保存现有值,然后将属性重新配置为 getter:

    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

    【讨论】:

      【解决方案2】:

      可以使用 Object.defineProperty 重载本机 set 和 get 函数

      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
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-13
        • 2017-09-24
        • 1970-01-01
        • 2011-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        相关资源
        最近更新 更多