Software Ontwikkeling
Prototypes uitbreiden met JavaScript
Door Django · · 2 min leestijd

Een van de ideologische knelpunten van het eerste JavaScript-framework was het uitbreiden van prototypen versus inpakfuncties. Frameworks zoals MooTools en Prototype verlengden prototypes, terwijl jQuery en andere kleinere frameworks dat niet deden. Elk had zijn voordelen, maar uiteindelijk, al die jaren later, geloof ik nog steeds dat de mogelijkheid om native prototypes uit te breiden een enorm kenmerk van JavaScript is. Laten we eens kijken hoe gemakkelijk het is om elke instantie van een primitieve kracht te geven door prototypes uit te breiden!
Elke JavaScript-native, zoals Number, String, Array, Objectenz. heeft een prototype. Elke methode op a prototype wordt geërfd door elke instantie van dat object. Zo kunnen wij elke `Array bijvoorbeeld met een unique methode door het prototype uit te breiden:
Array.prototype.unique = function() { return [...new Set(this)]; } ['1', '1', '2'].unique(); // ['1', '2'] new Array('1', '1', '2').unique(); // ['1', '2']
Merk op dat als u ook kettingcapaciteit kunt garanderen door terug te keren this:
['1', '1', '2'].unique().reverse(); // ['2', '1']
De grootste kritiek op het uitbreiden van prototypes is altijd naambotsing geweest waarbij de uiteindelijke specificatie-implementatie anders is dan de raamwerkimplementatie. Hoewel ik dat argument begrijp, kun je het bestrijden door functienamen als voorvoegsel te gebruiken. Het toevoegen van superkrachten aan een native prototype zodat elke instantie het heeft, is zo handig dat ik nooit iemand zou vertellen een prototype niet uit te breiden. #MooToolsFTW.