Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。

Object.create(proto[, propertiesObject])

参数

  proto

    新创建对象的原型对象。

  propertiesObject

    可选。如果没有指定为 undefined,则是要添加到新创建对象的不可枚举(默认)属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应Object.defineProperties()的第二个参数。

返回值

  一个新对象,带着指定的原型对象和属性。

例外

  如果propertiesObject参数是 null 或非原始包装对象,则抛出一个 TypeError 异常。

例:使用 Object.create 的 propertyObject参数

var o;

// 创建一个原型为null的空对象
o = Object.create(null); o = {};
// 以字面量方式创建的空对象就相当于:
o = Object.create(Object.prototype); o = Object.create(Object.prototype, {
// foo会成为所创建对象的数据属性
foo: {
writable:true,
configurable:true,
value: "hello"
},
// bar会成为所创建对象的访问器属性
bar: {
configurable: false,
get: function() { return 10 },
set: function(value) {
console.log("Setting `o.bar` to", value);
}
}
}); function Constructor(){}
o = new Constructor();
// 上面的一句就相当于:
o = Object.create(Constructor.prototype);
// 当然,如果在Constructor函数中有一些初始化代码,Object.create不能执行那些代码 // 创建一个以另一个空对象为原型,且拥有一个属性p的对象
o = Object.create({}, { p: { value: 42 } }) // 省略了的属性特性默认为false,所以属性p是不可写,不可枚举,不可配置的:
o.p = 24
o.p
//42 o.q = 12
for (var prop in o) {
console.log(prop)
}
//"q" delete o.p
//false //创建一个可写的,可枚举的,可配置的属性p
o2 = Object.create({}, {
p: {
value: 42,
writable: true,
enumerable: true,
configurable: true
}
});

参考文献:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/create

最新文章

  1. click事件的累加绑定,绑定一次点击事件,执行多次
  2. WebComponent魔法堂:深究Custom Element 之 标准构建
  3. NPM使用详解(上)
  4. 第十一篇 SQL Server代理维护计划
  5. JSBinding + SharpKit / 需要注意及不支持的列表
  6. Objective-C 【内存管理&手动内存管理 综述】
  7. MVC3系列~Html.BeginForm与Ajax.BeginForm
  8. ZOJ - 3469 Food Delivery (区间dp)
  9. mysql中的union用法以及子查询综合应用
  10. C# 动态代码生成控件后其他事件不能获取该控件的值
  11. Charles 抓包工具绿化过程记录
  12. HttpConnection详解【转】
  13. 什么是pytorch(3神经网络)(翻译)
  14. hive的本地安装部署,元数据存储到mysql中
  15. C/C++基础----拷贝控制
  16. PLSQL Package包的使用
  17. 远程连接软件TeamViewer
  18. 015PHP基础知识——流程控制(三)
  19. Linux C高级编程——网络编程之以太网(2)
  20. Tomcat_总结_01_tomcat环境搭建

热门文章

  1. springBoot集成flowable
  2. redis未授权访问漏洞——简单记录
  3. Philips and Calculator
  4. JZOJ 5451.Genocide
  5. 欢迎来到 SIXIANG 的 blog~
  6. 我有一篇Java Stream使用手册,学了就是你的了!
  7. WPF ScrollViewer 没有效果
  8. 使用 UnoCSS shortcuts 简化 class
  9. log 函数
  10. Spring Cloud Alibaba 整合 Seata 实现分布式事务