欢迎光临
我们一直在努力

Object.defineProperties与Object.defineProperty;Property description must be an object

报错

  最近在使用 Object.defineProperties 定义属性时报错: Property description must be an object

  报错说明:属性描述必须是对象.

  当时我是错把 defineProperty 当成了 defineProperties ,这两个乍一看有点像,但是存在一些差别。

区别

Object.defineProperty

  该方法会直接在一个对象上定义 一个 新属性,或者修改一个对象的现有属性

   Object.defineProperty( obj , prop , descriptor )

   obj : 要定义属性的对象。

   prop : 要定义或修改的属性的名称或 Symbol 。

   descriptor : 要定义或修改的属性描述符

// 使用 __proto__
var obj = {};
var descriptor = Object.create(null); // 没有继承的属性
// 默认没有 enumerable,没有 configurable,没有 writable
descriptor.value = 'static';
Object.defineProperty(obj, 'key', descriptor);

// 显式
Object.defineProperty(obj, "key", {
  enumerable: false,
  configurable: false,
  writable: false,
  value: "static"
});

Object.defineProperties

  方法直接在一个对象上定义 一个或多个 新的属性或修改现有属性

   Object.defineProperties( obj , props )

   obj :在其上定义或修改属性的对象。

   props:定义其可枚举属性或修改的属性描述符的对象

var obj = {};
Object.defineProperties(obj, {
  'property1': {
    value: true,
    writable: true
  },
  'property2': {
    value: 'Hello',
    writable: false
  }
  // etc. etc.
});
赞(0)
版权归原作者所有,如有侵权请告知。达维营-前端网 » Object.defineProperties与Object.defineProperty;Property description must be an object

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址