关于 Object.create 的问题

Object.create 这个方法,不是返回已经设置了指定 __proto__ 的对象嘛。

如果这样调用

let obj = Object.create(null);

此时执行

console.log(obj.__proto__) // undefined

返回的是 undefined

而实际上,通过调用 Object.getPrototypeOf(obj) 返回的就是 null

而如果执行

let o = Object.create({});

此时执行

console.log(o.__proto__)

返回的就是 {}

这是 Object.create 故意这样子设计的吗... 对于 Object.create(null) 而言,不能直接通过 __proto__ 来访问??

阅读 1.5k
1 个回答

__proto__ 是定义在 Object.prototype 的一个 getter/setter 。你现在原型对象设成了 null ,他就不存在了。于是打印 undefined

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