Bonjour,
Je souhaiterais savoir s'il vaut mieux programmer en javascript sous la forme JSON ou plutôt du type :
Merci d'avance de vos avis.Code:
1
2 nom de fonction = fonction() {}
Bien cordialement.
Version imprimable
Bonjour,
Je souhaiterais savoir s'il vaut mieux programmer en javascript sous la forme JSON ou plutôt du type :
Merci d'avance de vos avis.Code:
1
2 nom de fonction = fonction() {}
Bien cordialement.
le JSON ets une syntaxe particulière du js,
par exmple la définition d'une classe sans JSON
et en JSONCode:
1
2
3
4 function maClasse(){} maClasse.prototype.methode1 = function(){}; maClasse.prototype.methode2 = function(){};
Le JSON permet de spécifié toute les propriétées d'un objet d'un coup lors de sa création... si l'objet est déjà créer alors, on est obligé de passer par la syntaxe classiqueCode:
1
2
3
4
5
6 function maClasse(){} maClasse.prototype = { methode1 : function(){}, methode2 : function(){} }
Il existe une fonction simple pour faire du JSON sur un objet déjà crée
La fonction extend est plus lente que d'écrire une par une les propriétées a ajouter, mais est plus lisible, et plus simple à utiliser.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 function extend(destination, source){ for(var i in source) destination[i] = source[i]; } var monObjet1= { prop1 : 'ok1' }; var monObjet2= { prop2 : 'ok2' }; extend(monObjet ,monObjet2);
bye
Dans ce cas, lorsque l'on fait référence à "this" c'est l'objet tout entier qui est pointé (maClass).
Pour reprendre votre exemple :
Mais dans ce cas :Code:
1
2
3
4
5
6
7
8 function maClasse(){} maClasse.prototype = { prop : 'valeur' methode1 : function(){ this.prop; }, methode2 : function(){} }
Est ce que this fait référence à maClass comme une extension PHP ou il est uniquement lié à la methode2 ?Code:
1
2
3
4
5
6
7
8
9
10
11
12 function maClasse(){} maClasse.prototype = { prop : 'valeur' methode1 : function(){ this.prop; }, methode2 = { methode3 : function() { this.prop } } }
Dans le cas de JSON on peut donc dire que c'est juste un affaire de lisibilité dans le code ?
le this représente le contexte d'exécution, dans un prototype, le this, fait référence a une instance, sauf si on appel directement la méthode du prototype, dans ca cas c'est prototype le contexte
this vaux donc prototypeCode:
1
2
3
4 maClasse.prototype.methode1 = function(){ alert(this); }
this vaux l'instance de maclasseCode:
1
2
3
4 monInstanceDeMaClasse.methode1 = function(){ alert(this); }
une référence d'une fonction , aura pour contexte, l'objet la référençant, et non pas le contexte de la fonction d'origine ...
il existe aussi deux méthodes spéciale, call et apply, qui permettent de définir le contexte a appliquer à la fonction
Sinon, pour le JSON, oui , c 'est juste un problème de visibilité
bye
Salut,
Permettez de rappeler à l'occasion qu'il existe aussi un débat riche concernant les bonnes pratiques de Javascript :ccool: http://www.developpez.net/forums/d74...es-javascript/
ERE