JavaScript __proto__ not acessible

JavaScript __proto__ not acessible

本文关键字:acessible not proto JavaScript      更新时间:2023-09-26

我正在阅读__proto__prototype对象之间的差异,但是当我尝试访问对象实例的__proto__时,它返回了我undefined

以下是我编写的代码:

function Student() {
}
var student = new Student();
student.constructor // works well returns function Student() {}
student.__proto__ // returns undefined.

我指的是这个博客,但我也看到了其他博客也显示了相同的内容。我们永远不会在对象的实例上获取原型,而是__proto__对象,而是使用 prototype 属性创建的对象。

我是否遗漏了某些内容或__proto__已被完全删除?我已经在 Linux 上的 Chrome 版本 40.0.2214.94 上对此进行了测试。

任何帮助表示赞赏。谢谢!

属性

__proto__在ECMA 6以下的JavaScript版本中不是标准的,因此您不能期望每个浏览器都支持它,或者在每个浏览器中都有相同的行为。最好完全避免使用原型。你可以在这里阅读它:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto

这是Brendan eich对此的有趣评论:https://brendaneich.com/2011/01/harmony-of-my-dreams/编辑:

Object.setPrototypeOf 不会发生。可写原型实现起来非常痛苦(必须序列化为循环检查),并且会产生各种类型混淆危险。您可能认为您希望将其作为低级尖锐工具。JS不是那种语言。类和混合的高级形式似乎要好得多,并且不涉及如此锋利的边缘。