Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Откуда вызвана функция 
:(
    Опции темы
Aver78
Дата 21.1.2020, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Есть json объекты такого типа:

a = {
   func1() {
     alert('Как тут получить имя объекта вызвавшего функцию, в данном случае,  - b ?')
     }
}

b = {
   func2() {
       a.func1();
     }
}

P.S. Понятно дело не передавая имя объекта в параметрах функции.


Это сообщение отредактировал(а) Aver78 - 21.1.2020, 20:09
PM MAIL   Вверх
_zorn_
Дата 22.1.2020, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1018
Регистрация: 21.8.2007

Репутация: 1
Всего: 12



Никак. Адекватными методами. 
А из неадыкватных можно попробовать бросить исключение и прогуляться по стектрейсу. Но хз возможно ли это в js

И это не json объекты. json объект это строка типа {"bla":"blabla"} которую можно превратить в обычный объект используемого ЯП.

PS: JavaScript Object NOTATION
PPS. Да и "json объект" звучит как "АвтоВАЗ" - "Автомобильный Волжский Автомобильный Завод"

Это сообщение отредактировал(а) _zorn_ - 22.1.2020, 16:44
PM MAIL   Вверх
_zorn_
Дата 22.1.2020, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1018
Регистрация: 21.8.2007

Репутация: 1
Всего: 12



Хотя можно "имя" не передавать, а замутить `bind` или `call`
Тут уж сам решай 
https://developer.mozilla.org/ru/docs/Web/J...s/Function/bind
https://developer.mozilla.org/ru/docs/Web/J...s/Function/call

Что то типа того
Код

a = {
   func1() {
      alert('Caller name is ' + this.name)
   }
}

b = {
    name: 'BBBB',
    func2() {
        a.func1.call(this);
    }
}


Только сразу скажу, такой код начнет вонять через неделю  smile 


Это сообщение отредактировал(а) _zorn_ - 22.1.2020, 17:10
PM MAIL   Вверх
Aver78
Дата 22.1.2020, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Цитата

Хотя можно "имя" не передавать, а замутить `bind` или `call`


Да хрен редьки не слаще. Я как раз хочу избежать повторения в вызове функции одного и того-же много раз. А тут получаются то-же самое извращение, только с подвывертом.

Добавлено через 14 минут и 24 секунды
Цитата

Да и "json объект" звучит как

Как то ни разу не озаботился тем что бы расшифровать эту аббревиатура .

Как пройтись по стеку я не понял. Я вообще, мягко говоря, не фанат js, и знания соответствующие.
PM MAIL   Вверх
Aver78
Дата 25.3.2020, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



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

Код

a = {
   func1(param1) {
     alert(param1)
     }
}

b = {
   name: 'Я - b',
   func2() {
       a.func1(this.name);
     }
}
b.func2();



Для вызова  a.func1 во всех объектах будет использована одна и та-же конструкция для задания параметра param1 - this.name.

Как бы его прописать в функции изначально ? 
Такой вариант соответственно неверный, но возможно есть правильный ? 
Код

a = {
   func1(param1 = this.name) {
     alert(param1)
     }
}





PM MAIL   Вверх
Google
  Дата 30.3.2020, 22:43 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1242 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.