Maison  >  Article  >  interface Web  >  Introduction à la méthode générale d'élimination des fermetures dans les astuces JavaScript_javascript

Introduction à la méthode générale d'élimination des fermetures dans les astuces JavaScript_javascript

WBOY
WBOYoriginal
2016-05-16 16:09:061574parcourir

La fermeture de JavaScript est une fonctionnalité qu'il développe activement, et c'est aussi une fonctionnalité qui se développe passivement. En d'autres termes, d'une part, JS peut mieux résoudre certains problèmes de fermeture. certains problèmes, problème JS, et j'ai dû utiliser des fermetures pour à peine résoudre le problème.

Les premiers ne seront pas abordés ici. Si les fermetures JS peuvent mieux résoudre le problème, il est bien sûr préférable d'utiliser des fermetures.

Ce dont je parle est de ce dernier point, en raison des limitations de JS lui-même, qui doivent être résolues avec des fermetures, comme l'exigence de "les variables ne sont initialisées qu'une seule fois".

Le langage conventionnel est résolu comme ceci :

Copier le code Le code est le suivant :

classe Classe{
fonction init(){
Ceci.n = 0;
>
fonction func(){
Ceci.n ;
Renvoyez ceci.n;
>
>
var obj = nouvelle Classe();

JavaScript résout généralement ce problème (en utilisant des fermetures) :

Copier le code Le code est le suivant :

var obj = {
func : (fonction(){
var n = 0;
fonction de retour(){
n ;
Retour n;
>
})()
>

Mais je préfère cette méthode (en éliminant les fermetures) :

Copier le code Le code est le suivant :

fonction Classe(){
var soi = ceci;
soi.n = 0;
self.func = fonction(){
soi.n ;
retourner soi-même.n;
>
>
var obj = nouvelle Classe();

Parce que ce dernier a une meilleure évolutivité. Lorsque vous devez implémenter différentes opérations sur une variable, cette dernière peut simplement définir une fonction différente (c'est-à-dire une simple expansion linéaire), tandis que la première (fermeture) devra être complètement réécrite. (c'est pourquoi vous entendez souvent le mot refactoring).

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn