5 votes

La fonction interne ne peut pas accéder aux variables des fonctions externes

J'ai créé la jsfiddle suivante qui met en évidence mon problème. http://jsfiddle.net/UTG7U/

var ExampleObject = function() {
   var myArray = new Array();
   this.example = function() {
       alert(this.myArray);
   };
}

var exampleObj = new ExampleObject();
exampleObj.example();

Je suis novice en JavaScript et j'essaie de créer un objet, un champ et une méthode. Je n'arrive pas à faire en sorte que ma méthode accède à la variable de mon champ.

7voto

Raymond Chen Points 27887

Vous avez confondu deux types de variables : Les variables locales et les variables membres. var myArray est une variable locale. this.myArray est une variable membre.

Solution utilisant uniquement des variables locales :

var ExampleObject = function() {
   var myArray = new Array(); // create a local variable
   this.example = function() {
       alert(myArray); // access it as a local variable
   };
}

var exampleObj = new ExampleObject();
exampleObj.example();​

Solution utilisant uniquement des variables membres :

var ExampleObject = function() {
   this.myArray = new Array(); // create a member variable
   this.example = function() {
       alert(this.myArray); // access it as a member variable
   };
}

var exampleObj = new ExampleObject();
exampleObj.example();​

6voto

SilentSakky Points 3296

Vous essayiez d'accéder à une variable locale en utilisant cet opérateur, ce qui est faux, voici donc l'exemple de travail

var ExampleObject = function() {
   var myArray = new Array(1,2,3);
   this.example = function() {
       alert(myArray);
   };
}
var exampleObj = new ExampleObject();
exampleObj.example();​

Lien : http://jsfiddle.net/3QN37/

1voto

Rhyono Points 1375

Vous n'avez pas besoin de la this.myArray . Utilisation de myArray seul suffira (et fonctionnera).

1voto

SNAG Points 1836

alert(myArray); devrait fonctionner correctement je pense

1voto

Oliver Moran Points 1924

Quoi this change avec la portée de chaque fonction. Cependant, myArray sera visible pour la fonction interne. Exemple :

var ExampleObject = function() {
   var myArray = new Array();
   this.example = function() {
       alert(myArray);
   };
}
var exampleObj = new ExampleObject();
exampleObj.example();​

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X