原型链的终点在哪里结束?

新手上路,请多包涵

既然 Object.prototype.__proto__ === null, 那么访问对象的不可达属性时,为什么是undefined 而不是报错 Cannot read property 'name' of null呢?

阅读 3.5k
2 个回答
新手上路,请多包涵

Object.prototype.__proto__ 的值为 null 跟 Object.prototype 没有原型,其实表达了一个意思。
所以查找属性的时候查到 Object.prototype 就可以停止查找了
为什么在Object.prototype就停止呢?

  1. 第一个问题,你访问的对象是存在的,在访问属性的时候,如果对象本身不存在这个属性,会往上找原型链上存不存在。最后不管找不着得到,只是属性不存在,而非访问了null的一个属性,所以不会报错。
  2. 第二个问题,语言本身就是这样设计的
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题