L'appel d'une méthode dans un Constructeur de Javascript et de l'Accès à Ses Variables
Je suis en train d'appeler une méthode dans le constructeur de mon constructeur javascript, est-ce possible et si oui, je n'arrive pas à le faire fonctionner, toute réflexion serait génial! Merci!
function ValidateFields(pFormID){
var aForm = document.getElementById(pFormID);
this.errArray = new Array();//error tracker
this.CreateErrorList();
}
/*
* CreateErrorList()
* Creates a list of errors:
* <ul id="form-errors">
* <li>
* You must provide an email.
* </li>
* </ul>
* returns nothing
*/
ValidateFields.prototype.CreateErrorList = function(formstatid){
console.log("Create Error List");
}
Je l'ai eu à travailler avec ce qui est ci-dessus, mais je n'arrive pas à accéder à la " errArray variable dans CreateErrorList fonction.
- pythonists qui débarquent ici: l'initialisation d'un objet en javascript doit être fait avec le
new
mot-clé.
Vous devez vous connecter pour publier un commentaire.
Oui, il est possible, si votre constructeur de la fonction s'exécute, le
this
valeur a déjà la[[Prototype]]
propriété interne pointant vers leValidateFields.prototype
objet.Maintenant, en regardant l'édition, la
errArray
variable n'est pas disponible dans le champ d'application de laCreateErrorList
méthode, car elle est liée uniquement à la portée du constructeur lui-même.Si vous avez besoin de garder cette variable privé et d'autoriser uniquement les
CreateErrorList
méthode pour y accéder, vous pouvez le définir comme un méthode privilégiée, dans le constructeur:Noter que la méthode, car il est lié à
this
, ne sera pas partagé et il va exister physiquement sur toutes les instances de l'objet deValidateFields
.Une autre option, si vous n'avez pas l'esprit de la
errArray
variable, comme un public propriété de l'objet de votre cas, il vous suffit de l'affecter à lathis
objet:Plus d'infos:
Solution:
Espère que cette aide n'importe qui pouvait avoir une question de ce genre dans l'avenir.
Êtes-vous la création d'un objet de
ValidateFields
quelque part?Modifier: Vous devez ajouter
this
chaque fois que se référant à une fonction publique de propriétés.Mis à jour le code ici:
http://jsbin.com/afiru/edit