首页 > 解决方案 > 如何禁用访问对象的属性?JS

问题描述

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

    让 obj = {
       名称:“卡尔”
    }

    Object.DefineProperty(obj,'name',{
       可枚举:假,
       可写:假,
       可配置:假
    }

    console.log(obj.name) // 卡尔


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

例子

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

    console.log(obj.name) // karl2

如果 get 具有属性的 equals 名称,则会导致错误,我无法使其本机通过 get。

Object.defineProerty 没有属性读取属性

标签: javascriptecmascript-6properties

解决方案


可以使用 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

希望这可以帮助你


推荐阅读