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