一、主要区别

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)

JavaScript:{}、new Object和Object.create的区别

2.Object.create如果值是某个对象那么他的原型就是这个对象

let obj1 = {
    a:10,
    b:20,
    sum(){
        return this.a + this.b
    }
}
let obj5 = Object.create(obj1)

JavaScript:{}、new Object和Object.create的区别

3.这时候obj5不等于obj1,而obj5的原型等于obj1,如果obj1新增属性,同步obj5的原型也可以获得

JavaScript:{}、new Object和Object.create的区别

最后总结:
Object.cerate() 必须接收一个对象参数,创建的新对象的原型指向接收的参数对象,

new Object() 创建的新对象的原型指向的是 Object.prototype. (表述有点啰嗦,简洁点说就是前者继承指定对象, 后者继承内置对象Object)

可以通过Object.create(null) 创建一个干净的对象,也就是没有原型,

而 new Object() 创建的对象是 Object的实例,原型永远指向Object.prototype.

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。