J'ai créé une application JavaScript qui a beaucoup de manipulations de tableau (tri, filtrage, etc.).
Mes fonctions sont comme ceci: P>
myArray.function(arg1, arg2,...)
5 Réponses :
non. Array code> ne peut pas être sous-classé et se comporter toujours comme un tableau. Plus précisément, la propriété code> code> ne changera pas pour refléter les éléments ajoutés ou supprimés de la matrice. function MyArray() {}
MyArray.prototype = [];
MyArray.prototype.constructor = MyArray;
var instance = new MyArray;
instance[0] = 0;
alert(instance.length); // alerts 0
Curieusement, si vous utilisez la méthode .Push () pour stocker des données sur la matrice, la longueur des mises à jour correctement.
@ZLATINZLATEV, les candidats récents de la carte ECMascript ont pour objectif de permettre le sous-classement des éléments tels que le tableau, le regex et la date de sorte que cette réponse ne soit donc pas correcte pour beaucoup plus longtemps. Peut-être que vous voyez un comportement dans des moteurs JavaScript récents qui mettent en œuvre un soutien au sous-classement des tableaux.
Eh bien, au moins la dernière version de Chrome et la dernière version de Rhino Moteur (jusqu'à la date d'aujourd'hui - 31.Aug.2015) ont le comportement décrit par vous et moi.
Vous pouvez simplement ajouter la fonction directement à votre objet plutôt que sur le prototype:
var myArray = new Array();
myArray.myFunc = function(){ /* do stuff! */ };
myArray.myFunc();
Vous avez deux options:
Option One est d'étendre l'objet code> code> en ajoutant de nouvelles méthodes à celui-ci: p> L'avantage est que chaque matrice JavaScript aura maintenant cette méthode supplémentaire. Cela peut également être un désavantage lorsque des bibliothèques JavaScript multiples (externes) tentent d'ajouter les mêmes méthodes. De plus, cette nouvelle méthode apparaîtra dans option deux est de créer une "méthode d'usine" pour votre réseau étendu: p> Vous pouvez maintenant écrire ceci pour créer un nouveau tableau étendu: p> pour (Var Article dans myARray) CODE> Constructions qui peuvent être problématiques. P>
Je pense que la méthode d'usine est exactement ce dont j'ai besoin pour mon application spécifique. C'est tellement évident ... pas que je le vois :-) Merci!
i Créez ceci qui est ma version de matry, mais avec quelques modifications de ce tableau, vous ne pouvez pas modifier la longueur comme avec le tableau d'origine
let fullNames = names.map(nam => nam +' Nawaz');
console.log(fullNames); //MyArray {0: "Ali Nawaz", 1: "Hadi Nawaz", 2: "Amber Nawaz"}
Continuez à utiliser la fonction, vous n'avez pas besoin de tout dans OOP
Juste, mais j'aime bien votre propreté, par exemple pour enchaîner ou définir des options / arguments par défaut.