![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 3 Всего: 60 |
Добрый день.
Как получить имя объекта как в console.log Что бы было понятно о чем идет речь я выделил красной линией на скрине. http://s1.ipicture.ru/uploads/20130726/ppzUEnGQ.png Я уже перепробовал несколько варинатов среди них {}.call(b).toString() // отказался работать b.toString(); // object typeof // object Кросбраузерность не волнует использую только хром, это видно по скрину. Это сообщение отредактировал(а) Sanchezzz - 26.7.2013, 12:31 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 14 Всего: 55 |
У объектов нет имен. Вы говорите об имени переменной.
Не думаю, что это возможно - получить имя переменной, в которой лежит объект. Вы ведь... как бы... и так его (имя) используете... Тем более, если на этот объект ссылается куча разных переменных. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 3 Всего: 60 |
Я думаю можно получить консоль лог ведь как то это умудряться делать, я уже готов и в исходники влезть=)
Оффтоп Наткнулся на интересный момент в JS5 можно создать имена переменных в таком стиле var ಠ_ಠ = 'privet'; -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
JAYBE |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.3.2008 Репутация: нет Всего: 0 |
Да никак без создания дополнителньных метдов для прототипов. или организации назначения id создаваемым объектам.
|
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 3 Всего: 60 |
печалька в nodejs тоже по этому поводу пусто.
прототипы в каждый обьект тоже не очень дело. как же console.log определяет имя обьекта Не ужели в цикле window пробегает в тупом сравнении instanceof? -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 2 Всего: 5 |
Chrome работает на движке WebKit (Также Safari, новая Opera и т.д.).
На картинке у тебя дебаггер, для того чтобы вывести туда объект с его методами, всё, что угодно можно сделать. но, скорее всего, используется достаточно стандартный способ из WebKit'овской реализации JavaScript c дебаггером. А поточнее о задаче можно? Я у тебя вижу подчёркнутыми даже несколько объектов, часть их которых являются свойствами объекта THREE, который, как мне подсказывает интуиция, играет здесь роль пространства имён. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 14 Всего: 55 |
Не исключено, что имя переменной для console.log запоминается еще на уровне интерпретации кода. Или берется откуда-то поглубже, чем сам JS. Из более низкоуровневых системных вызовов в процессе выполнения кода.
Такая себе низкоуровневая библиотечка для отладки. Посмотрите на тот же xdebug для PHP. Он тоже много чего интересного может вывести в виде текста, но из-под PHP тоже не все из того доступно. Просто xdebug - это дополнение на C. И ему доступны средства, недоступные в самом PHP. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 2 Всего: 5 |
Ладно, залез в статью одного умного человека. И там написано, что объекты в JavaScript это "словари", набор пары, ключа (строка, она же имя переменной) и значения.
-------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 14 Всего: 55 |
Да, но, опять же, у многих ключей может быть одно и то же значение. Или многие могут ссылаться на тот же объект. Так что банальным перебором наверняка не узнаешь. Отношение "значение -> ключ" не является тут однозначным.
Тем не менее, отладчик так глупо не ошибается никогда. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Sanchezzz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 3 Всего: 60 |
console это стандартный webkit отладчик такой же как и в хроме, с хорошим API для вывода в эту консоль все что угодно, но не получения. Вывести туда все что угодно можно это не нужно, скрин был сделал для того что я хочю получить имя ссылки объекта.
Все созданные переменные без использования пространства (function(){ }); Хранятся в глобальной видимости в объекте window, это можно отнести к словарю коллекции Я рассматриваю только возможности nodejs(v8) или webkit. Для себя я выбрал node-webkit и за хорошей производительности в WEbGL, 61 фпс стабильно. в хроме у меня было 35. плюс еще то что приложение можно запустить как программу на linux mac win из коробки доступен v8, нету ограничений, которые можно получить в браузере, ноде-хром в одном флаконе. для постройки интерфейса редактирования. Это нужно что бы было легко модифицировать параметры обьекта. Править в ручную векторы матриц обьекта, подправить в realtime шейдеры задать для них текстуры и другие uniform параметры Это сообщение отредактировал(а) Sanchezzz - 27.7.2013, 13:18 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
||||
|
|||||
akizelokro |
|
||||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 2 Всего: 5 |
Самый простой способ это (не учитываю пока вариант скачать WebKit и использовать исходники для написания своего браузера с дебаггером) это задать метод, например, начинающийся с подчеркивания, которое принято считать используемым для системных вещей), что-то вида
Вообще-то, что-то подобное и должен делать сам интерпретатор. Не знаю, как он расфутболивает анонимные функции (функции тоже объекты в JS по сути, но отличать интерпретатор должен и анонимные функции. Добавлено @ 16:09
Есть области видимости. А так, насколько я понимаю, уникальными являются два прототипа остальных объектов, это null и Object.prototype Это сообщение отредактировал(а) akizelokro - 27.7.2013, 16:10 -------------------- a = a + b; b = a - b; a = a - b; |
||||
|
|||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 14 Всего: 55 |
Да, но... Это не очень помогает найти имя переменной вручную. Области видимости в JS недоступны программисту так же, как имена переменных. Нельзя, например, получить "все видимые переменные в этой строчке программы". Я то в курсе, как интерпретатор работает, но я имел ввиду, что способ хранения объектов в JS все равно не поможет найти имя переменной. Фактически, программист оперирует не с переменными, а со значениями, находящимися в них. Имена переменных нужны лишь для общения человека с машиной и имеют физический смысл только на уровне интерпретации. Чтобы иметь это имя для использования в программе, его надо тоже превратить в значение некой переменной. К примеру, как предложено чуть выше. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 2 Всего: 5 |
Есть одна идейка, щас посмотрю.
-------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 3 Всего: 60 |
В общем люди не мучайтесь фиг с этой затеей.
Напишу тучу условий, для нужных мне полей а не для всех. Спасибо всем. Это сообщение отредактировал(а) Sanchezzz - 27.7.2013, 22:49 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 2 Всего: 5 |
Есть возможный финт ушами, например:
-------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |