Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.02.2012, 19:19
Аспирант
Отправить личное сообщение для jsuse Посмотреть профиль Найти все сообщения от jsuse
 
Регистрация: 10.04.2010
Сообщений: 92

Как посмотреть на кого указывает this?
Как можно увидеть на какой объект/функцию указывает this?

Когда я вызываю внутри функции-конструктора:
alert(this);

он пишет только
[object Object]

А вот как узнать какой именно object он имеет ввиду? К какому object он относится?
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2012, 19:38
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

в данном примере this - window|global
alert(this == window);

Если речь идет о new Function(), то this == window.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 12.02.2012 в 19:42.
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2012, 19:39
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

console.log(this) и смотри в консоль


Сообщение от jsuse
Когда я вызываю внутри функции-конструктора
если функцию вызвать с оператором new то сначала создается пустой обьект, потом запускается функция и this в этой функции указывает на этот обьект

Последний раз редактировалось Mахmахmахimus, 12.02.2012 в 19:41.
Ответить с цитированием
  #4 (permalink)  
Старый 13.02.2012, 11:29
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Красиво вывести массив или объект можно этим http://javascript.ru/php/print_r#comment-8219
Ответить с цитированием
  #5 (permalink)  
Старый 13.02.2012, 15:35
Аспирант
Отправить личное сообщение для jsuse Посмотреть профиль Найти все сообщения от jsuse
 
Регистрация: 10.04.2010
Сообщений: 92

Сообщение от Serg_pnz Посмотреть сообщение
Красиво вывести массив или объект можно этим http://javascript.ru/php/print_r#comment-8219
Шикарная функция, спасибо. Примерно это и хотел. Я думал, что есть какая-то функция, куда передаешь this, а она возвращает название его или объекта или функции-конструктора. Типа так как-то
var bar = object_name(this);
alert(bar);             // выводит имя кому принадлежит this

Но это еще лучше
Ответить с цитированием
  #6 (permalink)  
Старый 13.02.2012, 19:27
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

Сообщение от jsuse
а она возвращает название его
у обьектов нет названий, ты имел ввиду возвращать название идентефикатора по которому был получен обьект?
Ответить с цитированием
  #7 (permalink)  
Старый 14.02.2012, 23:18
Аспирант
Отправить личное сообщение для jsuse Посмотреть профиль Найти все сообщения от jsuse
 
Регистрация: 10.04.2010
Сообщений: 92

Сообщение от Mахmахmахimus Посмотреть сообщение
у обьектов нет названий, ты имел ввиду возвращать название идентефикатора по которому был получен обьект?

Сори, непонятно написал. Имел ввиду имя переменной объекта, созданного из функции-конструктора. То есть примерно так:

function Animal(name) {
    this.name = name;
    obj_name(this);          // и вот эта функция бы выводила просто "dog", то есть имя объекта, на которой указывает this
};
var dog = new Animal("Шарик");


В функции-конструкторе есть this. Как понять, на какой объект он указывает? Здесь, в этом примере, допустим явно видно, что this - это dog. А если вложенных функций окажется много, и в каждой будет еще по несколько с замыканиями и своими this. Вот чтобы облегчить это отслеживание, на какой объект указывает какой-то конкретный this, хотелось бы такую функцию, как в примере. Ставишь ее в какой-то функции, где есть this, но сразу не ясно, что это за this, а она тебе через alert тут же выводит имя объекта этого this
obj_name(this);     // выводит имя объекта, т.е. dog в примере
Ответить с цитированием
  #8 (permalink)  
Старый 14.02.2012, 23:36
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Это невозможно.
Ответить с цитированием
  #9 (permalink)  
Старый 15.02.2012, 01:39
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

Сообщение от Kolyaj Посмотреть сообщение
Это невозможно.
вообще пока в js нет перегрузки операторов это действительно невозможно, потому что открою очевидность новичку, у обьекта может быть 1 000 000 ссылок и все они могут лежать в разных переменных.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как реализовать передачу функции в функцию?? czp Общие вопросы Javascript 10 29.11.2011 19:21
Как сделать как в JQ? faforty Общие вопросы Javascript 8 14.11.2011 01:35
JS классы - как объединить функции в класс olga153b Events/DOM/Window 3 01.11.2011 14:13
Посмотреть как устроен mycoding ExtJS 2 13.05.2010 14:00
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56