La meilleure Façon d'Ajouter des Méthodes Existantes Objet Javascript

Je suis la réception de l'ajax d'alimentation de documents qui ressemble à quelque chose comme ceci (très simplifié):

aDocs = [{title:'new doc', ext:'pdf'}, {title:'another', ext:'xlsx'}];

Je vais parcourir l'aDocs tableau et afficher des informations sur chaque doc, tout en ajoutant quelques méthodes pour chaque doc qui va permettre de modifier le code HTML pour l'affichage et faire des appels API pour mettre à jour la base de données.

J'ai lu ici que, dans le but d'ajouter des méthodes à des objets existants, vous pouvez utiliser le __proto__ attribut. Quelque chose le long des lignes de:

function Doc(){}
Doc.prototype.getExt = function(){return this.ext}
Doc.prototype.getTitle = function(){return this.title}
for (var i=0; i<aDocs.length; i++){
  aDocs[i].__proto__ = Doc.prototype
}

Selon que l'article ci-dessus,ce n'est pas officiel, javascript, n'est pas pris en charge par IE (ne le sera jamais), et sera probablement obsolète dans les navigateurs webkit.

Voici une alternative coup de couteau à elle:

function getExt(){ return this.ext }
function getTitle(){return this.title}
for (var i=0; i<aDocs.length; i++){
  aDocs[i].getExt = getExt;
  aDocs[i].getTitle = getTitle;
}

Est cette seconde alternative viable et efficace? Ou suis-je re-création de ces fonctions et de créer ainsi redondant dessus?

À nouveau les exemples ci-dessus sont simplifiées (je sais aDocs[i].ext permettra de résoudre le problème ci-dessus, mais mes méthodes d'affichage et d'appels de l'API est plus compliquée).

Quel est le problème avec ce que vous avez essayé?

OriginalL'auteur Eric H. | 2013-03-12