Лучший способ доступа дочернего объекта к родительскому объекту?

У меня есть JS, который вы увидите ниже. Я хочу, чтобы объект внутреннего класса имел доступ к своему родителю. Ему нужен доступ к родительским методам и свойствам. То, как я это сделал, работает, но я хотел бы знать, есть ли что-то, что я могу сделать во внутреннем конструкторе класса, чтобы получить родительский элемент, вместо того, чтобы родитель явно указывал ребенку, кто он родитель. Это кажется неуклюжим.

<html>
<body>
<script>
function ChildClass(name){
    //this.myParent=  no way of knowing .....
    this.myName=name;
    this.whereDidIComeFrom=function(){
        document.write(this.myName+ " came from " +this.myParent.dad+"<br>");
    }
}

function ParentClass(name){
    this.dad=name;
    this.myChild=new ChildClass(name+"son");
    this.myChild.myParent=this;   //only way I know for myChild to access parent
    this.myChild.whereDidIComeFrom();
}

var parentDavid = new ParentClass("David");
var parentJohn = new ParentClass("John");
</script>
</body>
</html>

Результат выполнения выглядит следующим образом:

Дэвидсон пришел от Дэвида

Джонсон пришел от Джона

Я спрашиваю, потому что указанная выше структура уже существует в проекте, который я поддерживаю. Я не могу переделывать все это. Только теперь дочерний объект должен получить доступ к своему родительскому. Раньше в этом не было необходимости. Было бы неплохо вообще не менять родительский класс и делать все свои изменения внутри дочернего. Но если то, что у меня есть, в основном «то, что тебе нужно сделать», пусть будет так.

6
задан Lightness Races with Monica 8 June 2011 в 21:42
поделиться