js的new操作符做了哪些事
- 新建一个空对象
- 把新对象的_proto_指向构造函数的prototype
- 将构造函数中的this指针指向新对象,执行构造函数,新对象有了构造函数中的属性或方法
- 返回这个对象
js的Object.create()做了哪些事
- 创建一个新对象
- 把新对象的_proto_指向传入的第一个参数
- 用传入的第二个参数给新对象赋予属性和方法
区别
- Object.cerate() 必须接收一个对象参数,创建的新对象的原型指向接收的参数对象,new Object() 创建的新对象的原型指向的是 Object.prototype.
- 两者都是创建空对象,但是new创建出的空对象会绑定Object的prototype原型对象,但是Object.create(null)的空对象是没有任何属性的。