繁体   English   中英

如何禁用访问 object 的属性? JS

[英]how can i disable access a property of a object ? JS

如何禁用 JavaScript 中 object 的属性的访问? 禁用读取属性

    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 具有等于属性的名称,则会导致错误,我无法通过 get 将其本地化为 go。

Object.defineProerty 没有属性读取属性

您需要保存现有值,然后将属性重新配置为 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

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

希望这可以帮助你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM