Skip to content
imshengli blog
Go back

ES5 Object

Object.defineProperty()

直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

Object.defineProperty(obj, prop, descriptor);

属性描述符

对象里目前存在的属性描述符有两种主要形式,描述符是两者中其中的一个:

两种描述符可选值:

数据描述符同时具有以下可选键值:

存取描述符同时具有以下可选键值:

// 在对象中添加一个属性与数据描述符的示例
Object.defineProperty({}, "a", {
  value : 37,
  writable : true,
  enumerable : true,
  configurable : true
});

Object.create()

会使用指定的原型对象及其属性去创建一个新的对象。

Object.create(proto[, propertiesObject]);
// 参数:proto
// proto: null, 创建一个原型为null的空对象;
Object.create(null);
// 相当于 {}
Object.create(Object.prototype);
// 如果proto参数不是 null 或一个对象,则抛出一个 TypeError 异常。
Object.create(proto[, propertiesObject]);

// 参数:propertiesObject
// 省略了的属性特性默认为false, 所以属性p是不可写, 不可枚举, 不可配置的:
Object.create({}, {
  p: {
    value: 42
  }
});
// 创建一个可写的,可枚举的,可配置的属性p
Object.create({}, {
  p: {
    value: 42,
    writable: true,
    enumerable: true,
    configurable: true
  }
});

// 返回值:
// 在指定原型对象上添加新属性后的对象。

参考链接:


Share this post on:

Previous Post
JS 正则表达式
Next Post
ES6 Function