Object相关操作(二),new Object()和Object.create()的用法
发布网友
发布时间:2023-01-23 14:34
我来回答
共1个回答
热心网友
时间:2023-01-23 16:03
创建对象有多种方法,我们来一一对比看看区别,再分析他们的差异。
同样是创建一个对象,为什么得到的值不一样呢?
new Object() 通过构造函数来创建对象, 添加的属性是在自身实例下。
Object.create() es6创建对象的另一种方式,可以理解为继承一个对象, 添加的属性是在原型下。
通过Object.create()创建的对象属性是挂在原型上,而不是实例上,虽然还是可以通过c.name获取到lily,但不是他本身的属性。
我们具体看看这两个方法的用法及参数
这里创建的对象C的属性name的默认描述为不可配置、不可枚举、不可写入,参考上一篇 对象的Object.defineProperty
还有一点我们需要注意,这里创建C时对应的原型为{},也可以通过原型链找到toString方法,那如果换一种方式我们看看
这里可以看到c的原型换成了null,没有继承Object的原型链上面的方法, 所以如果我们使用new Object()创建一个空对象时,它会继承Object的原型链,但如果我们使用Object.create()创建一个空对象时它时没有原型的。