对短语的混淆 "extend Object.prototype or one of the other build-in prototype"
confusion over the phrase "extend Object.prototype or one of the other build-in prototype"
目前正在研究javascript原型和继承,在MDN
上遇到了以下几段
我不太清楚作者所说的 extend Object.prototype or one of the other build-in prototype
是什么意思。有人可以澄清这个概念,最好是用代码示例吗?谢谢
除了Object
,还有Array
、Function
等也有原型。出于 MDN 中提到的原因,扩展这些原型也被认为是不好的做法。
术语“内置原型”是指标准对象继承的原型对象。这包括语言指定的 Boolean.prototype
、Number.prototype
、String.prototype
、Symbol.prototype
、Object.prototype
、Array.prototype
、Function.prototype
、Date.prototype
,以及各种 Error
的原型对象、类型数组、数据结构((弱)Map、Set)和迭代器。
它还包含环境中的其他本机原型对象,例如 DOM(Node.prototype
、Element.prototype
、Document.prototype
、...)和其他 Web API (例如 XMLHttpRequest.prototype
).
参见 ES6 中的 definition of built-in objects and the whole section about standard built-in objects。
一般来说,你不应该惹他们。它们是由环境提供的,它们不是你的——不要碰它们并在它们上面创建你自己的方法。如果你想编写模块化的、可互操作的代码,你不应该依赖于自定义的、全局的内置修改。另请参阅 Why is extending native objects a bad practice? 了解更多讨论。
目前正在研究javascript原型和继承,在MDN
上遇到了以下几段我不太清楚作者所说的 extend Object.prototype or one of the other build-in prototype
是什么意思。有人可以澄清这个概念,最好是用代码示例吗?谢谢
除了Object
,还有Array
、Function
等也有原型。出于 MDN 中提到的原因,扩展这些原型也被认为是不好的做法。
术语“内置原型”是指标准对象继承的原型对象。这包括语言指定的 Boolean.prototype
、Number.prototype
、String.prototype
、Symbol.prototype
、Object.prototype
、Array.prototype
、Function.prototype
、Date.prototype
,以及各种 Error
的原型对象、类型数组、数据结构((弱)Map、Set)和迭代器。
它还包含环境中的其他本机原型对象,例如 DOM(Node.prototype
、Element.prototype
、Document.prototype
、...)和其他 Web API (例如 XMLHttpRequest.prototype
).
参见 ES6 中的 definition of built-in objects and the whole section about standard built-in objects。
一般来说,你不应该惹他们。它们是由环境提供的,它们不是你的——不要碰它们并在它们上面创建你自己的方法。如果你想编写模块化的、可互操作的代码,你不应该依赖于自定义的、全局的内置修改。另请参阅 Why is extending native objects a bad practice? 了解更多讨论。