一、主要区别
1、{} 和 new Object() 除了本身创建的对象,都继承了 Object 原型链上(Object.prototype)的属性或者方法,eg:toString();当创建的对象相同时,可以说 {} 等价于 new Object() 。
2、Object.create() 是将创建的对象继承到原型链上,而本身没有继承 Object.prototype 的属性和方法。
二、Object.create的用法
1.Object.create也可以创建一个空对象,但是他的原型如果不指定则没有
let obj3 = Object.create(null)
2.Object.create如果值是某个对象那么他的原型就是这个对象
let obj1 = { a:10, b:20, sum(){ return this.a + this.b } } let obj5 = Object.create(obj1)
3.这时候obj5不等于obj1,而obj5的原型等于obj1,如果obj1新增属性,同步obj5的原型也可以获得
最后总结:
Object.cerate() 必须接收一个对象参数,创建的新对象的原型指向接收的参数对象,
new Object() 创建的新对象的原型指向的是 Object.prototype. (表述有点啰嗦,简洁点说就是前者继承指定对象, 后者继承内置对象Object)
可以通过Object.create(null) 创建一个干净的对象,也就是没有原型,
而 new Object() 创建的对象是 Object的实例,原型永远指向Object.prototype.
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)