2010-07-24 6 views
3

Est-il possible de créer votre propre coutume, je crois que le terme est «méthode»? Par exemple, quelque chose comme ceci:Méthode de remplacement personnalisée?

où replaceSpecial() remplacera automatiquement dire, la lettre e avec autre chose.

La raison pour laquelle je suis intéressé à faire cela est que ce que je veux faire est d'attraper des chaînes et ensuite exécuter un grand nombre d'actions de remplacement, donc j'espère que quand j'appelle replaceSpecial(), il lancera un fonction.

Merci

Répondre

8

Vous pouvez ajouter vos méthodes pour String.prototype qui deviendra disponible pour toutes les chaînes. C'est ainsi que trim() est implémenté dans la plupart des bibliothèques par exemple.

String.prototype.replaceSpecial = function() { 
    return this.replace(/l/g, 'L'); 
}; 

"hello".replaceSpecial(); // heLLo 

Toutefois, notez qu'il est généralement une mauvaise pratique pour définir fonctionnalité très spécifique sur les prototypes natifs. Ce qui précède est un bon exemple du même problème. Pour de tels cas spécifiques, pensez à utiliser une fonction ou un wrapper personnalisé pour faire le travail.

function replaceSpecial(str) { 
    return str.replace(/l/g, 'L'); 
} 

replaceSpecial("hello"); // heLLo 

ou sous un espace de noms personnalisé, par exemple.

var StringUtils = { 
    replaceSpecial: function(str) { .. }, 
    .. 
}; 

StringUtils.replaceSpecial("hello"); // heLLo 
+0

Nous vous remercions de votre aide. :) – Pete

+0

Vous êtes les bienvenus :) – Anurag

+0

+1. Il peut être utile de mentionner qu'il n'est jamais correct d'augmenter 'Object.prototype' ou' Array.prototype'. Il y a eu quelques cas où la modification d'autres prototypes de constructeurs intégrés a été trop sommaire ... par exemple le script de calendrier dynarch modifie 'Date.prototype' qui finit par casser un autre script commun, je ne me souviens pas lequel à le moment. –

Questions connexes