Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обратиться к свойству или методу parent из child (https://javascript.ru/forum/misc/36038-obratitsya-k-svojjstvu-ili-metodu-parent-iz-child.html)

simple 01.03.2013 19:40

Обратиться к свойству или методу parent из child
 
подскажите плиз, что надо сделать чтобы заработал этот код?
functin Parent() {
  this.child = new Child();
  this.data = 10;
};
function Child() {
  this.method = function () {
     alert(Parent.data) // получить доступ к свойству data родителя
};

simple 01.03.2013 22:00

Методом тыка родил вот такой код, вобщем сделал через замыкание, оцените профи сгодится ли такая конструкция?
function Parent () {
  this.child = {
    self : this,
    name : 'child',
    fnChild : function () {
      this.self.fnParent.call(this);
    }
  };
  this.name = 'parent';
  this.fnParent = function () {
    alert(this.name); 
  };
}

rgl 01.03.2013 22:46

Поясните что вы понимаете под parent и child Если parent - базовый класс, а child - производный (выражаясь терминами С++) то у одного parent может быть много разных child, да и ничего parent про child знать не обязан.

simple 01.03.2013 23:16

мне нужно из метода объекта, который определяется как свойство другого объекта, добраться до метода или свойства этого самого объекта. Я не силен в терминах, просто решил объяснить на примере дом, где один объект вложенный вдругой является его потомком.

rgl 01.03.2013 23:33

function Parent() {
  this.child = new Child();
  this.child.parent = this; // добавлено вот это
  this.data = 10;
}

function Child() {
  this.method = function () {
     alert(this.parent.data) // получить доступ к свойству data родителя
  }
}

var test = new Parent();
test.child.method();

// но!!!
var falseParent = {};
falseParent.data = 25;
falseParent.child = test.child;

falseParent.child.method(); // все равно 10

simple 02.03.2013 00:04

круть...спасибо друг.

simple 02.03.2013 00:10

по сути это почти как у меня, только без замыкания?


Часовой пояс GMT +3, время: 10:52.