__proto__ 和 [[Prototype]] 的区别
proto 和 [[Prototype]] 的区别
-
proto 是 [[Prototype]] 的因历史原因而留下来的 getter/setter
初学者常犯一个普遍的错误,就是不知道 proto 和 [[Prototype]] 的区别。 -
请注意,proto 与内部的 [[Prototype]] 不一样。proto 是 [[Prototype]] 的 getter/setter。稍后,我们将看到在什么情况下理解它们很重要,在建立对 JavaScript 语言的理解时,让我们牢记这一点。
-
proto 属性有点过时了。它的存在是出于历史的原因,现代编程语言建议我们应该使用函数
Object.getPrototypeOf({})/Object.setPrototypeOf({})
来取代 proto 去 get/set 原型。 -
根据规范,proto 必须仅受浏览器环境的支持。但实际上,包括服务端在内的所有环境都支持它,因此我们使用它是非常安全的。
-
由于 proto 标记在观感上更加明显,所以我们在后面的示例中将使用它。