0

如何在构造时创建不可枚举的属性?

function pp_urlfield( object ) {}
pp_urlfield.prototype = Object.create( Object.prototype, {
  type_internal: {
    writable: true,
    configurable: true,
    enumerable: false,
    value: ""
  },
  type: {
    get: function() {
      return this.type_internal;
    },
    set: function( value ) {
      this.type_internal = value;
    }
  }
} );

如果我构造此对象并分配成员“type”,则分配“this.type_internal = value”会创建一个本地且不可枚举的变量:

var a = new pp_urlfield;
a.type = 1;
//Returns ["type_internal"]
Object.keys(a);

我通过替换 this.type_internal = value 找到了部分解决方案:

Object.defineProperty(this, "type_internal", { value: value, enumerable: false });

但我认为必须有更好的解决方案。(我不想使用任何框架,例如原型)

4

0 回答 0