Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.12.2016, 15:34
Аспирант
Отправить личное сообщение для vanoha Посмотреть профиль Найти все сообщения от vanoha
 
Регистрация: 15.11.2014
Сообщений: 53

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


Как узнать в закомментированном месте svoystvo1?
Ответить с цитированием
  #2 (permalink)  
Старый 02.12.2016, 15:52
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

for(var key in Obj) {
   if(Obj[key] === this) return key;
}
Ответить с цитированием
  #3 (permalink)  
Старый 02.12.2016, 16:05
Аспирант
Отправить личное сообщение для vanoha Посмотреть профиль Найти все сообщения от vanoha
 
Регистрация: 15.11.2014
Сообщений: 53

Не, не в ту степь. Может как то не понятно написал.
Вот внутри Obj, я могу его достать как this.svoystvo1, а вот как достать это свойство в дочернем объекте? Терез this уже не как, так как там this уже svoystvo2, а не Obj. Есть ли просто способ достать его типа: this.this.svoystvo2 (понимаю что это фигня, это просто пример для понимания)?
Ответить с цитированием
  #4 (permalink)  
Старый 02.12.2016, 16:18
Аспирант
Отправить личное сообщение для vanoha Посмотреть профиль Найти все сообщения от vanoha
 
Регистрация: 15.11.2014
Сообщений: 53

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

Но как то это коряво выглядит. Есть какое то специальное слово типа this?
Ответить с цитированием
  #5 (permalink)  
Старый 02.12.2016, 17:30
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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

Вот так - работает, но не делает то, что вы хотите
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();
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Конструктор как свойство объекта kenrike Общие вопросы Javascript 5 01.05.2013 23:55
Как обратится к единственному свойству объекта? Shitbox2 Общие вопросы Javascript 3 05.03.2013 04:42
Как узнать по какой ссылке кликнули? Rooner jQuery 3 19.12.2012 17:14
Как можно что-нибудь узнать про интерфейс чужого объекта GRIG Internet Explorer 0 09.03.2011 17:16