JavaScript: ce que vs
Je suis en train d'essayer de mieux comprendre l'utilisation et ceci en JavaScript. Je suis la suite de Douglas Crockford du tutoriel ici: http://javascript.crockford.com/private.html
mais je suis confus en ce qui concerne un couple de choses. J'ai donné un exemple ci-dessous, et je voudrais savoir si je fais une utilisation correcte d'entre eux:
function ObjectC()
{
//...
}
function ObjectA(givenB)
{
ObjectC.call(this); //is the use of this correct here or do we need that?
var aa = givenB;
var that = this;
function myA ()
{
that.getA(); //is the use of that correct or do we need this?
}
this.getA = function() //is the use of this correct?
{
console.log("ObjectA");
};
}
function ObjectB()
{
var that = this;
var bb = new ObjectA(that); //is the use of that correct or do we need this?
this.getB = function()
{
return bb;
};
that.getB(); //is the use of that correct or do we need this?
}
Remarque c'est juste un exemple.
Simple:
Avant le vote de près à la question, veuillez expliquer ce que vous n'aimez pas au sujet de sorte que j'ai une chance de s'améliorer dans le futur.
"que" est juste une variable utilisée pour stocker la valeur actuelle de "ce", qui change à mesure que le contexte d'exécution de votre programme de modifications - à-dire lorsque vous entrez dans une nouvelle portée
that
n'est pas un mot clé, mais un simple nom de la variable.Avant le vote de près à la question, veuillez expliquer ce que vous n'aimez pas au sujet de sorte que j'ai une chance de s'améliorer dans le futur.
"que" est juste une variable utilisée pour stocker la valeur actuelle de "ce", qui change à mesure que le contexte d'exécution de votre programme de modifications - à-dire lorsque vous entrez dans une nouvelle portée
that
est utilisé pour enregistrer la valeur de this
parce que this
de getB fonction n'est pas la même que ObjectBthis
est un mot-clé, that
est juste quelques nom de la variable (il pourrait être sausages
). Dans ObjectB vous essayez de passer that
à ObjectA avant vous avez défini that
. Dans l'ensemble de vos exemples, vous pourriez éliminer l'utilisation de that
et utiliser this
. La seule raison d'utiliser that
est si votre utilisation sera dans un champ où this
points à autre chose.
OriginalL'auteur FranXh | 2014-07-08
Vous devez vous connecter pour publier un commentaire.
La première chose que vous devez comprendre, c'est comment le
this
mot clé œuvres. C'est la valeur dépend de la façon dont la fonction/méthode/le constructeur est appelé.Dans ce cas,
function ObjectA
est un constructeur, de sorte que vous pouvez simplement utiliserthis
à l'intérieur du code d'elle. En fait, avecvar that = this;
vous les déclarez être absolument identiques (sauf si vous utilisezthat
avant de l'affecter à elle).Encore une fois, cela dépend de la façon dont la fonction est appelée à qui vous n'avez malheureusement pas nous montrer. Si si est une méthode de l'instance,
this
aurait été bien; mais il semble que vous aurez besoin d'utiliserthat
.Comme indiqué ci-dessus, à l'aide de
that
ne ferait aucune différence.that
estundefined
lorsqu'il est utilisé ici. Et il serait censé avoir la même valeur quethis
de toute façon. Mieux utiliserthis
.De nouveau, les deux ont le même effet. Mais puisque vous n'avez pas besoin
that
, vous devriez utiliserthis
.OriginalL'auteur Bergi
this
en JavaScript se réfère toujours à actuelle de l'objet, la méthode qui a été appelé. Mais parfois, vous avez besoin d'accéder àthis
de votre objet dans les plus profonds. Par exemple, dans les rappels. Comme:Il ne fonctionnera pas, parce que
this
dans le rappel peut se référer àhttp
, pour certains élément du dom ou juste la fenêtre(ce qui est très fréquent). Il est donc solution commune pour définirself
outhat
, un alias pourthis
ou de votre objet, de sorte que vous pouvez renvoyer n'importe où à l'intérieur.Cela devrait vous donner une vision pourquoi il est utilisé et comment il doit être utilisé.
Il n'y a pas d'autres raisons(currect moi si je me trompe) pour créer des variables, vous pouvez utiliser
this
pour envoyer votre objet à d'autres objets et faire les choses, de nombreuses missions, une telle logique, wow...OriginalL'auteur dt0xff
Tout est correct sauf pour :
Il vous manque
;
etthat
n'est pas déclarer.Vous avez besoin
that
(dans votre cas, c'est le nom de la variable que vous utilisez) lorsque vous souhaitez l'utiliser dans un autre champ d'application :OriginalL'auteur Elfayer
Ce "qui" est dans ce contexte est simplement une variable qui est égale à "ce". Que signifie de dire "ça", c'est exactement la même chose que de dire "cela", qui fait en compliquant inutilement.
Ce code:
Donnera le même résultat que ce code:
Avoir une variable pour représenter "ce" juste complique les choses quand vous pouvez juste dire "ce".
OriginalL'auteur RageCage