混淆短语“extend Object.prototype或其他内置原型之一”

时间:2017-03-21 23:55:05

标签: javascript prototype encapsulation

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

我不确定作者对extend Object.prototype or one of the other build-in prototype的意思。有人可以澄清这个概念,最好是用代码样本吗?谢谢

enter image description here

2 个答案:

答案 0 :(得分:2)

术语" 内置原型"指标准对象继承的原型对象。其中包括语言指定的Boolean.prototypeNumber.prototypeString.prototypeSymbol.prototypeObject.prototypeArray.prototypeFunction.prototype,{{ 1}},以及各种Date.prototype s,类型数组,数据结构((Weak-)Map,Set)和迭代器的原型对象。

它还包含环境中的其他原生原型对象,例如DOM(ErrorNode.prototypeElement.prototype,...)和其他Web API(例如Document.prototype )。

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

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

答案 1 :(得分:1)

Object以外的其他内容,例如ArrayFunction,也有原型。由于MDN上提到的原因,将这些原型扩展也被认为是不好的做法。