2017-03-21 37 views
0

目前,我正在學習JavaScript的原型和繼承,我也遇到了MDN混淆短語「延長的Object.prototype或者其他內置的原型之一」

下面的段落我不完全確定作者的意思是extend Object.prototype or one of the other build-in prototype。有人能澄清這個概念,最好是用代碼示例嗎?由於

enter image description here

+2

它基本上意味着*「儘量不要添加任何東西到'Object.prototype'」*。例如'Object.prototype.buyMeAPony = function(){...}'是一個壞主意。其他內置原型也一樣 – Phil

+0

哦,是的,這是有道理的。感謝您的評論 – Thor

回答

2

術語「內置原型」是指從標準對象繼承原型對象。這包括各種Error S中的語言指定Boolean.prototypeNumber.prototypeString.prototypeSymbol.prototypeObject.prototypeArray.prototypeFunction.prototypeDate.prototype,與原型對象類型數組,數據結構((Weak-)地圖,集)和迭代器。

它也包括在環境中的其他本地原型對象,例如,DOM(Node.prototypeElement.prototypeDocument.prototype,...)和其他Web的API(例如XMLHttpRequest.prototype)。

參見ES6中的definition of built-in objectswhole section about standard built-in objects

一般來說,你不應該惹他們。它們是由環境提供的,它們不是你的 - 不要觸摸它們並在它們上面創建自己的方法。如果你想編寫模塊化,可互操作的代碼,你不應該依賴定製的內置插件的全局修改。有關更多討論,另請參閱Why is extending native objects a bad practice?

1

除了Object其他的事情,比如ArrayFunction,有原型了。由於MDN提到的原因,延長這些原型也被認爲是不好的做法。