9
votes

Attribut d'objet parent d'accès JavaScript

J'ai un petit problème dans JS, j'ai deux objets imbriqués et j'aimerais accéder à une variable du parent, comme: xxx

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)

toute aide appréciée Merci beaucoup!


1 commentaires

Dans la fonction displaya , 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.


6 Réponses :


1
votes

JavaScript est Prototype basé sur , ce n'est pas une langue d'oopie régulière comme php ou Java.

Jetez un oeil à Héritage et la chaîne prototype et Implémentez quelque chose comme Héritage JavaScript simple .

Vous pouvez probablement accéder au parent via window.parent s'il est dans la portée globale, mais votre exemple ne fonctionnera pas dans tous les cas.


0 commentaires

0
votes

Il n'y a pas de moyen général pour l'objet 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: xxx pré>

Vous n'avez pas besoin de placer le parent dans le monde Portée et utilisation 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


0 commentaires

0
votes

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.


0 commentaires

12
votes

Vous pouvez utiliser appel code> a> Pour définir la valeur de Ceci code>: xxx pré>

Vous pouvez également être intéressé par Reliure IT: P>

parent.child.displayA = function(){
  console.log(parent.a);
};
parent.child.displayA(); // 5


0 commentaires

0
votes

Dans votre exemple, vous n'avez pas hérité. Vous pouvez faire ce xxx


0 commentaires

6
votes

Vous pouvez utiliser super.prop pour accéder aux propriétés de la classe mère. Bien sûr, seulement si vous utilisez ES6.


0 commentaires