J'ai un petit problème dans JS, j'ai deux objets imbriqués et j'aimerais accéder à une variable du parent, comme: et je voudrais juste savoir Comment faire parent.child.displaya Travail :) (j'ai des sous-objets qui ont besoin d'un accès à une variable d'un parent) p> toute aide appréciée
Merci beaucoup! P> p>
6 Réponses :
JavaScript est Prototype basé sur , ce n'est pas une langue d'oopie régulière comme php ou Java. P>
Jetez un oeil à Héritage et la chaîne prototype et Implémentez quelque chose comme Héritage JavaScript simple . P>
Vous pouvez probablement accéder au parent via window.parent code> s'il est dans la portée globale, mais votre exemple ne fonctionnera pas dans tous les cas. P>
Il n'y a pas de moyen général pour l'objet Vous n'avez pas besoin de placer le parent dans le monde Portée et utilisation enfant code> savoir qu'il s'agit d'un membre de l'objet parent. Dans votre situation, vous pouvez faire une référence directe à l'objet parent dans displaya () code>, comme: window.parent code> comme une autre réponse suggère; Puisque vous déclarez displaya code> dans la portée du parent code>, la fonction se fermera sur parent code>, et il sera accessible n'importe où dans enfant code>. Étant donné que la fermeture contient une référence à l'objet code> parent code>, vous verrez que les modifications apportées au parent code> seront reflétées dans le comportement de displaya code>. Par exemple, supposons supposer parent code> et enfant code> sont définis comme dans votre exemple, sauf displaya code> est modifié pour utiliser parent.a code >. ALORS: P> parent.child.displayA(); //=> 5
parent.a = 10;
parent.child.displayA(); //=> 10
Je pense que cela ne fait pas vraiment de la sorte de le faire comme ça puisque vous pouvez accéder à l'objet enfant uniquement à travers son parent. Alors, pourquoi ajouter une displayb mthod à l'enfant pendant que vous pouvez l'ajouter au parent qui a accès à toutes les propriétés de l'enfant. P>
Dans votre exemple, vous n'avez pas hérité. Vous pouvez faire ce
Vous pouvez utiliser super.prop code> pour accéder aux propriétés de la classe mère. Bien sûr, seulement si vous utilisez ES6. P>
Dans la fonction
displaya code>, vous référencez "Ceci" et tente d'accéder à son attribut "A". L'appel à "Ceci" fait référence à l'objet enfant et non au parent. Si vous avez utilisé un constructeur, vous pouvez passer dans le contexte (ceci) de son parent à l'objet enfant. Ou vous pouvez utiliser les méthodes d'appel ou de liaison.