这个跟展示的方法有关。因为 `__proto__` 不是一个普通的属性,而是一个定义在 `Object.prototype` 上的 [accessor property/属性访问器](https://link.segmentfault.com/?enc=PWilyHFp0%2BD5kXEf8HCPnw%3D%3D.lEjqIDkJAvp%2FBNhfNk%2BWe7y9j4B1irYsPU2JyLmhZd3sO3zeFUVhbUaXHl%2F%2BcCvYaBUbQnyVhatjUGAuEUH6iCqsQnTeIoJx%2Fy7IgwjEdVgrPo2%2BwnA3vjjRLAqat95M) 。(你可以在 `__proto__` 下面看到 `get __proto__` , `set __proto__`) 所以 `__proto__` 并没有出现在每一层 prototype 里,而只出现在了它所定义的位置(`Object.prototype.__proto__`),而它的值展示的是它在原始对象(也就是 Fn)上的计算结果,也就是 Fn.prototype 。 而 `[[Prototype]]` 是真正的原型对象。但是 Object.prototype.[[Prototype]] 是 null ,于是在结果中并没有展示。 * * * `[[Prototype]]` 也不是普通的属性,而是一个 [internel slot](https://link.segmentfault.com/?enc=wCRtgsXEesGOkEfcaX4Vcg%3D%3D.MWUtBSda4farhVHcB18Dg2CRWNowGUTRNLYYvymwoQJ%2F6rH%2FdLXYyiOKAvnidAX4ow0CE%2Bha8MTyP0DEMXusxvNRJDKIJO8E9F6CLn67rW9Up6oV8bG2QrsUUYXRVsWbp0bpTGRHgmNHcBd5p2HOTx2CbB%2BnJ7g7F93H8MCpb3y%2B%2B38NRf9ewZlx6aID3p5j4QwFQa9zbX7%2FNKe89dHlMbstsY4D2C2UyVdMK7QvZtxy3Lv76pDOh7oQtAOaLhI8lgflTptTQW8uQceG%2BZ2Ucw%3D%3D) 。它在调试器里的展示策略可能跟普通的属性也不一样。