javascript - 对短语 "extend Object.prototype or one of the other build-in prototype"的混淆

标签 javascript prototype encapsulation

我目前正在研究javascript原型(prototype)和继承,在MDN上遇到过以下段落

我不太确定作者所说的extend Object.prototype 或其他内置原型(prototype)之一是什么意思。有人可以澄清这个概念,最好用代码示例吗?谢谢

enter image description here

最佳答案

术语“内置原型(prototype)”指的是标准对象继承的原型(prototype)对象。这包括语言指定的 Boolean.prototypeNumber.prototypeString.prototypeSymbol.prototypeObject.prototypeArray.prototypeFunction.prototypeDate.prototype 以及原型(prototype)对象各种错误、类型化数组、数据结构((弱)Map、Set)和迭代器。

它还包含环境中的其他 native 原型(prototype)对象,例如 DOM(Node.prototypeElement.prototypeDocument.prototype >、...)和其他 Web API(例如 XMLHttpRequest.prototype)。

请参阅definition of built-in objectswhole section about standard built-in objects在 ES6 中。

一般来说,你不应该惹恼它们。它们是由环境提供的,不是你的——不要碰它们并在它们上创建你自己的方法。如果您想编写模块化、可互操作的代码,则不应依赖内置函数的自定义全局修改。另请参阅Why is extending native objects a bad practice?进行更多讨论。

关于javascript - 对短语 "extend Object.prototype or one of the other build-in prototype"的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42940348/

相关文章:

javascript - 在匿名 JavaScript 函数中隐藏变量,但使用 `this` 访问它们

java - Kotlin 是否打破了封装规则?

javascript - Angular 2 - 将组件动态创建/注入(inject)到 *ngFor 循环内的特定元素中

javascript - sequelizejs 在删除行时保存对象

C 函数参数 : struct, 或 const struct*

javascript - 原型(prototype)声明的函数不是函数

c++ - 我应该在类里面使用 setters/getters 吗?

javascript - 由 ng-options 填充的下拉列表需要滚动条

javascript - 如何使用jquery过滤多个重复值?

javascript - 如何在 Canvas 上制作带有背景图像的球的动画?