Object.create()为什么这样写

看到很多手写Object.create()是这样写的:

function myCreate(obj) {
    function F() {}
    F.prototype = obj
    return new F()
}

不是很理解为什么要新建一个构造函数再用new调用这个构造函数,为什么不能像下面这样写:

function myCreate(obj) {
      var o = {}
      o.__proto__ = obj
      return o
}
阅读 1.2k
1 个回答

prototype 不是原型对象。

第一种写法才可以正确设置原型对象。

a=new F()

a 的原型对象是 F.prototype

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题