[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проинспектировать объект
paul85
Привет всем!

Взялся за повышение скила в JS. Пишу:

<div onClick="functionFoo(this);">НАЖМИ</div>

В заголовке функции ловлю аргумент и алертом вывожу то, что прилетело. И что же, прилетает кусок HTML кода! Как так, думаю... Пишу алерт typeof(var). Пишет, что объект.

Очевидно, при выводе срабатывает какая-то магия, типа __toString();

Вопрос: а как проинспектировать объект в JS? Ну вообще понять, какие свойства в нем содержатся и так далее? Погуглил - люди скрипты неудобные пишут для этих целей. А попроще есть что-нибудь?

Вопрос, конечно, такой - больше риторический. Но вдруг! Или кто-нибудь поделится скриптом хорошим...
sergeiss
Самое простое - написать в нужном месте скрипта JS
console.log( var );

И - вуаля! - ты получаешь все свойства объекта, а также его методы. Надо только зайти в консоль не забыть :)

Есть у меня одна небольшая функция для той же цели, которая позволяет вывести только свойства объекта (и имя, и величину). Удобно, если нужно "напечатать" эти данные внутрь какого-нибудь ДОМ-объекта.
Но с консолью чаще всего удобнее.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Invis1ble
В инспекторе браузера смотри

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

stump
Стоит попробовать перебрать объект в цикле отбрасывая функции вопросом if typeof function. останутся только свойства.

_____________
Трус не играет в хокей
paul85
sergeiss, попробовал console.log() но он мне отдает тоже самое, что и alert. Просто кусок HTML кода, причем смотрел и через хромом и через FireFox. Даже никаких намеков на то, что это объект.

Цитата (Invis1ble @ 2.03.2015 - 23:30)
В инспекторе браузера смотри

Ну это консоль имеется ввиду, которая по F12 вызывается? FireBug?

Цитата (stump @ 3.03.2015 - 00:13)
Стоит попробовать перебрать объект в цикле отбрасывая функции вопросом if typeof function. останутся только свойства.

Да это понятно. Я думал может быть как-то попроще можно.

volter9
Цитата (paul85 @ 2.03.2015 - 23:16)
Взялся за повышение скила в JS.

Цитата (paul85 @ 2.03.2015 - 23:16)
<div onClick="functionFoo(this);">НАЖМИ</div>

Начни тогда с привязывание событий через JS:
<div id="clickme">НАЖМИ</div>

var div = document.getElementById('clickme');

div.addEventListener('click', function () {
console.dir(this);

functionFoo(this);
});

А дальше смотришь в консольке браузера (только DOM nod'ы показывают HTML, но с помощью console.dir() функции можно просмотреть все свойства объекта (ну кроме свойства примитивных объектов типа String или Number)) (Ctrl+Shift+J).

_____________
Мой блог
sergeiss
Цитата (paul85 @ 3.03.2015 - 01:49)
попробовал console.log() но он мне отдает тоже самое, что и alert


В Хроме, как и в Опере, если выводим инфу об объекте, то она показывается в одну строку. Но слева виден треугольничек, кликая на который раскрываем (или скрываем) более подробную информацию. У тебя там есть такой?

Также, можно попробовать ту функцию, о которой я говорил чуть ранее в теме

попробуй такую функцию


// выводим данные в том виде, как нам удобнее
console.log( showObjectInfo( var ) );

// собственно функция
function showObjectInfo( obj )
{
var str='';
var txt = (arguments.length == 2 ) ? arguments[1] : '';
for( var i in obj )
{
if( typeof( obj[i] ) != 'object' )
str += txt + ' ' + i + ' : ' + obj[i] + '\n';
else
str += i + ' :\n' + showObjectInfo( obj[i], txt + '***' );

}
return str;
} //




_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
paul85
Цитата (volter9 @ 3.03.2015 - 01:56)
Начни тогда с привязывание событий через JS:

volter9, да я, как бы, наоборот, ухожу от этого... =) Кстати, если открыть исходники страницы vk, то там дофига всего сделано через onclick. Поэтому судить о том, что правильнее, мне кажется, довольно сложно. На данный момент времени onclick видится более удобным.

Цитата (sergeiss @ 3.03.2015 - 02:25)
У тебя там есть такой?

Неа, нифига чего-то... Ну только если присутствуют вложенные тэги HTML, тогда там есть эти треугольнички. А когда элемент/нода (this) не имеет чайлдов, то просто строка HTML и все.

Ща попробую функцию, спасибо! )
volter9
Цитата (paul85 @ 3.03.2015 - 04:13)
Неа, нифига чего-то... Ну только если присутствуют вложенные тэги HTML, тогда там есть эти треугольнички. А когда элемент/нода (this) не имеет чайлдов, то просто строка HTML и все.

Надо юзать console.dir(). Я же тебе его в коде написал выше, ты тот код не читал видимо. Сразу же увидишь все свойства любого объекта (кроме примитивов вроде String, Number).

Цитата (paul85 @ 3.03.2015 - 04:13)
если открыть исходники страницы vk

А если vk используют глобальные переменные объявленные неизвестно где, то это значит что так хорошо, нет, так нужно делать.
vk не самый лучший пример для подрожания как JS должен быть написан. Если хорошенько посмотреть код, там можно найти много плохих примеров.

Цитата (paul85 @ 3.03.2015 - 04:13)
то там дофига всего сделано через onclick

Я думаю им не легко дебажить все эти onclick'и. Ну если тебе удобно использовать onclick, пожалуйста. Только я не думаю что будет неудобно накладывать onclick'и на длинные списки (т.е. копипастить onclick на каждый элемент списка). Короче inline события это как inline CSS (т.е. style="").

_____________
Мой блог
Invis1ble
хром:
(сорри за размер)

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

paul85
Invis1ble, ах вот оно где! Спасибо, кажется разобрался! =)

Всем спасибо за участие!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.