Il y a actuellement 436 visiteurs
Samedi 06 Décembre 2025
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

[Résolu] JS, les boucles et variables avec des fonctions...

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

[Résolu] JS, les boucles et variables avec des fonctions...

Message le 26 Juin 2012 19:47

Salut tout le monde ! :)

Alors voilà, j'ai un gros point sur lequel je bloque et demande de l'aide sur celui-ci.
Voici l'histoire :
Code: Tout sélectionner
for (var p in properties) {
    object[p] = function() {
        return another_object[p] ;
    }
}

Le problème de cet algorithme est que le "p" du "return" ne s'applique que lorsque la fonction est appelée, donc "p" sera dans tous les cas égal au dernier élément de properties.

Voici un exemple de résultats :
Code: Tout sélectionner
var object = {} ;
var another_object = {
    a:10, b:11, c:12, d:13
}
var properties = {
    a:1, b:2, c:3, d:4
} ;

//Execution du code précédent...

alert(object['a']()) ;    //Affiche 13.
alert(object['b']()) ;    //Affiche 13.
alert(object['c']()) ;    //Affiche 13.
alert(object['d']()) ;    //Affiche 13.


En HTML/JavaScript c'est simple, il suffit d'ajouter un attribut à l'élément comprenant l'indice d'un tableau par exemple ; mais là, je ne trouve pas de moyen pour garder le bon "p" pour chaque fonctions de object.

Avez-vous une solution ? Merci d'avance pour vos réponses. :)
Avatar de l'utilisateur
Thyrion
Expert(e)
Expert(e)
 
Messages: 1253
Inscription: 25 Aoû 2007 19:49
 


Re: JavaScript, les boucles et variables avec des fonctions.

Message le 26 Juin 2012 22:55

Pas de solutions ? Ben alors ? :P

J'plaisante. :wink: Mais j'ai trouvé une solution pour vous : Le scope.
Code: Tout sélectionner
for (var p in properties) {
    (function() {
        var prop = p ;
        object[prop] = function() {
            return another_object[prop] ;
        }
    })() ;
}

alert(object['a']()) ;    //Affiche 10.
alert(object['b']()) ;    //Affiche 11.
alert(object['c']()) ;    //Affiche 12.
alert(object['c']()) ;    //Affiche 13.


Magique hein ? :D

Comment ça marche ? Les scopes en JavaScript sont des contextes d'exécutions, d'où la difficulté du "this" à gérer.
L'astuce est d'exécuter un univers indépendant, ou plutôt plusieurs univers indépendants (dans cet exemple).
Ce qui veut dire que la fonction n'est jamais "morte", elle existe toujours et on peut l'exécuter à n'importe quel moment.
Or, les variables (var) à l'intérieur sont liées à la fonction, donc privées - Tous les "prop" sont donc uniques.

Et voilà !
Avatar de l'utilisateur
Thyrion
Expert(e)
Expert(e)
 
Messages: 1253
Inscription: 25 Aoû 2007 19:49
 



Sujets similaires

Message [Résolu] La sauvegarde de windows ne s'est pas effectuée
Salut tout le monde j'ai essayé de faire une sauvegarde Windows et elle a échoué je pense à cause de deux fichiers de mon téléphone, je ne sais d'ailleurs pas pourquoi elles se trouvent avec? voir captures écran svp pour plus de clarté https://up2sha.re/file?f=VfV04mIhttps://up2sha.re/file?f=kabkYAt ...
Réponses: 5

Message [Résolu] imprimante brother win11
Bonjour,J'ai essayé les conseils lu sur le net pour installer mon imprimante brother dcp2520dw sur mon pc win11, mais "échec".J'ai utilisé un câble comme demandé.Cdt
Réponses: 16

Message [Résolu]probleme Ads by Images+
Depuis quelque jours avec mon moteur de recherche Google sur Firefox, c'est ajouté Ads by Images+merci
Réponses: 16

Message [Résolu]Ads by Images+
Bonjour depuis quelques jours, j'ai Ads by images dans mes recherches Google peut on enlevé ca merci
Réponses: 5

Message [Résolu] probleme ecran noir de 1 à 2 secondes
Salut tout le monde Décidément......... J'ai un problème sur mon pc qui n'est pas grave, mais qui est perturbant. Je m'explique lorsque je fais un clic droit sur un fichier ou dossier dans l'explorateur de fichier ou sur le bureau, j'ai un écran noir qui apparait brièvement et qui fait redémarrer t ...
Réponses: 42

Message [Résolu] Demarrage W10
Bonjour à tous,Depuis peu, mon PC démarre en affichant les documents stockés sur mon DD externe autrement que sur mon bureau. Seriez vous m'expliquer comment y remédier s'il vous plait ? Merci par avance A bientot
Réponses: 12


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités


.: Nous contacter :: Flux RSS :: Données personnelles :.