Vous y accédez à partir d'un objet est fonction inline
Je vais avoir des difficultés de référencement "ce" de dans un javascript de la fonction inline, au sein d'une méthode de l'objet.
var testObject = {
oThis : this,
testVariable : "somestring",
init : function(){
console.log(this.testVariable); //outputs testVariable as expected
this.testObject.submit(function(){
var anotherThis = this;
console.log(this.testVariable) //undefined
console.log(oThis.testVariable) //undefined
console.log(testObject.testVariable) //outputs testVariable
console.log(anotherThis.testVariable) //undefined
}
}
Comment puis-je accéder à this.testVariable
de l'intérieur de la fonction envoyer?
Je suis aussi à l'aide de jQuery ainsi, si cela fait une différence.
Je me demande si c'est la meilleure approche et je devrais peut-être présenter comme une fonction distincte, puis de référence qui inline, comme:
init : function(){
this.testObject.submit = this.submitForm;
},
submitForm : function(){
//do validation here
console.log(this.testVariable) //outputs testvariable
.
.
.
return valid;
}
Mais cela ne semble pas fonctionner non plus - et je pense que je voudrais juste garder les soumettre fonction inline dans mon init
méthode pour l'instant.
double possible de Pourquoi n'est-il pas de fermeture ont accès à la " ce mot-clé? - jQuery
OriginalL'auteur Matt | 2010-08-28
Vous devez vous connecter pour publier un commentaire.
Une façon courante consiste à attribuer à la
this
vous voulez une variable locale.Maintenant je pense que je suis la personne la plus stupide du monde -/
OriginalL'auteur Matti Virkkunen
Vous pourriez aussi le faire à l'aide de ES6 flèche fonctions:
Flèche fonctions de capture de la
this
valeur de la enfermant contexte, en évitant la nécessité d'attribuerthis
à une nouvelle variable, ou à utiliser les fonctions liées.OriginalL'auteur jitin
La variable "ce" est lié dynamiquement lorsqu'une fonction — tout fonction, indépendamment de l'endroit où il a été défini — est appelé.
Sans voir ce que la fonction "soumettre" est censé faire, ou là où il est censé être utilisé, il est difficile de dire comment le changer. Une chose que vous pourriez faire est de définir "soumettre" dans votre "init" de la fonction:
Tant que "init" est appelé d'abord avec "ce" définie à une instance d'un de vos objets, vous devriez être bon.
OriginalL'auteur Pointy
Vous ne pouvez accéder à l'oThis variable dans le contexte de l'objet, qui est perdu, parce que vous êtes à l'intérieur d'une autre fonction. ou par l'intermédiaire de l'instanciation d'un nouvel objet. comme ce
Ensuite, vous pouvez accéder à oThis en utilisant:
mais ce serait redondant
Je voudrais essayer quelque chose comme ça Matt:
OriginalL'auteur SethZanderJensen