Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как узнать свойство объекта-родителя (https://javascript.ru/forum/misc/66238-kak-uznat-svojjstvo-obekta-roditelya.html)

vanoha 02.12.2016 15:34

как узнать свойство объекта-родителя
 
К примеру есть:
var Obj = {
  svoystvo1:123456,
  svoystvo2:{
    metod1: function(){/*как тут узнать svoystvo1?*/}
  }
}


Как узнать в закомментированном месте svoystvo1?

ruslan_mart 02.12.2016 15:52

for(var key in Obj) {
   if(Obj[key] === this) return key;
}

vanoha 02.12.2016 16:05

Не, не в ту степь. Может как то не понятно написал.
Вот внутри Obj, я могу его достать как this.svoystvo1, а вот как достать это свойство в дочернем объекте? Терез this уже не как, так как там this уже svoystvo2, а не Obj. Есть ли просто способ достать его типа: this.this.svoystvo2 (понимаю что это фигня, это просто пример для понимания)?

vanoha 02.12.2016 16:18

Сделал кривой вариант, но от работает:
var Obj = {
  svoystvo1:123456,
  svoystvo2:{
    obj:this,
    metod1: function(){alert(this.obj.svoystvo1);}
  }
}

Но как то это коряво выглядит. Есть какое то специальное слово типа this?

Dilettante_Pro 02.12.2016 17:30

vanoha
Цитата:

Сделал кривой вариант, но от работает:
А как вы проверяли, что оно работает?
У меня что-то не очень:-E

Вот так - работает, но не делает то, что вы хотите
var Obj = {
  svoystvo1:123456,
  svoystvo2:{
    obj:this,
    metod1: function(){alert('Metod1');}
  }
}
Obj.svoystvo2.metod1();

Вот так - делает то, что вы хотите, но не работает
var Obj = {
  svoystvo1:123456,
  svoystvo2:{
    obj:this,
    metod1: function(){alert(this.obj.svoystvo1);}
  }
}
Obj.svoystvo2.metod1();


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