new 操作符和Object.create() 的异同

js的new操作符做了哪些事

  • 新建一个空对象
  • 把新对象的_proto_指向构造函数的prototype
  • 将构造函数中的this指针指向新对象,执行构造函数,新对象有了构造函数中的属性或方法
  • 返回这个对象

js的Object.create()做了哪些事

  • 创建一个新对象
  • 把新对象的_proto_指向传入的第一个参数
  • 用传入的第二个参数给新对象赋予属性和方法

区别

  • Object.cerate() 必须接收一个对象参数,创建的新对象的原型指向接收的参数对象,new Object() 创建的新对象的原型指向的是 Object.prototype.
  • 两者都是创建空对象,但是new创建出的空对象会绑定Object的prototype原型对象,但是Object.create(null)的空对象是没有任何属性的。

猜你喜欢

转载自www.cnblogs.com/xiaoyuchen/p/10537429.html