Accès JavaScript parent des attributs de l'objet
J'ai un petit problème en JS, j'ai deux objets imbriqués, et je voudrais accéder à une variable de la mère, comme suit:
var parent = {
a : 5,
child: {
b : 3,
displayA : function(){
console.log(this.a);
//undefined
},
displayB : function(){
console.log(this.b);
//displays 3
}
}
}
Et je voudrais juste savoir comment faire de parent.enfant.displayA travail 🙂 (j'ai des sous-objets qui ont besoin d'accéder à un parent variable)
Toute aide appréciée
Merci beaucoup!
Dans le
displayA
fonction, vous faites référence à "ce" et de tenter d'accéder à son "un" attribut. L'appel à "cela" se réfère ici à l'enfant de l'objet et non pas le parent. Si vous avez utilisé un constructeur, vous pourriez passer dans le contexte (ce) de son parent à l'enfant objet. Ou vous pouvez utiliser l'appel ou lier des méthodes.OriginalL'auteur Jo Colina | 2015-04-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
pour définir la valeur de
this
:Vous pourriez également être intéressé par la liaison:
Ou vous pouvez simplement utiliser
parent
au lieu dethis
:OriginalL'auteur Oriol
Vous pouvez utiliser
super.prop
accéder parent propriétés de la classe. Bien sûr, seulement si vous utilisez ES6.OriginalL'auteur Dmytro Medvid
Javascript est un prototype basé, il n'est pas un régulier de la programmation orientée objet du langage comme PHP ou Java.
Prendre un coup d'oeil à L'héritage et la chaîne de prototype et de mettre en œuvre quelque chose comme Javascript Simple héritage.
Vous pourriez probablement accès à des parents
window.parent
si c'est dans le contexte global, mais votre exemple ne fonctionnera pas dans tous les cas.OriginalL'auteur Falc
Il n'existe pas de manière générale pour l'objet
child
de savoir que c'est un membre de l'objet parent. Dans votre situation, vous pouvez faire une référence directe à l'objet parent dansdisplayA()
, comme suit:Vous n'avez pas besoin de la place des parents dans la portée globale et l'utilisation
window.parent
comme une autre réponse suggère, puisque vous déclarezdisplayA
dans le champ d'application deparent
, la fonction de fermeture pendantparent
, et il sera accessible de n'importe où danschild
. Depuis la fermeture contient une référence à laparent
objet, vous verrez que les modifications apportées àparent
sera reflété dans le comportement dedisplayA
. Par exemple, supposons queparent
etchild
sont définis comme dans votre exemple, à l'exception dedisplayA
est modifié pour utiliserparent.a
. Alors:Tout cela étant dit, si vous essayez d'imiter la programmation orientée objet, puis l'autre réponse est juste: vous devez en savoir plus sur la façon dont le prototype Javascript filière.
OriginalL'auteur Matt Wetmore
Je pense que cela ne fait pas de sens de le faire comme ça, vous pourrez accéder à l'objet enfant par sa mère. alors pourquoi en rajouter une mthod displayB à l'enfant alors que vous pouvez ajouter à la mère qui a accès à toutes les propriétés enfants.
OriginalL'auteur Mostafa EL BARRAK
Dans votre exemple, vous n'avez pas l'héritage. Vous pouvez faire cela
OriginalL'auteur tutankhamun