В JavaScript / jQuery, если я alert
какой - то объект, я получаю либо [object]
или [object Object]
Есть ли способ узнать:
в чем разница между этими двумя объектами
какой тип объекта это
какие свойства содержит этот объект, и значения каждого свойства
?
javascript
jquery
Сайфул
источник
источник
Ответы:
Вы можете найти ключи и значения объекта, вызвав собственный
for in
цикл JavaScript :или используя
.each()
метод jQuery :За исключением шести примитивных типов , все в ECMA- / JavaScript является объектом. Массивы; функции; все есть объект. Даже большинство этих примитивов на самом деле также являются объектами с ограниченным набором методов. При необходимости они вставляются в предметы под капотом. Чтобы узнать имя базового класса, вы можете вызвать
Object.prototype.toString
метод объекта, например:Вышеуказанное будет выводиться
[object Array]
.Есть несколько других имен классов, как
[object Object]
,[object Function]
,[object Date]
,[object String]
,[object Number]
,[object Array]
, и[object Regex]
.источник
typeof new String("foo");
создает «объект», это обернутое примитивное значение, аtypeof "foo";
создает «строку». См. Такжеvar str = 'primitive'; str.foo = 'bar'; /*wouldn't work*/
тогда какvar oStr = new String('string object'); oStr.foo = 'bar'; /*works*/
если вы собираетесь абстрагироваться и называть их всеми объектами, тогда вы можете думать о примитивах как о примитивных объектах, но это не эквивалентно суперклассу истинных объектов JavaScript.console.log
для осмотра объектовЧтобы получить список свойств / значений объекта:
В Firefox - Firebug:
Стандартный JS для получения ключей объекта, заимствованных у Слашника :
Редактирует:
<object>
в приведенном выше примере следует заменить ссылкой на переменную объекта.console.log()
должен использоваться в консоли, если вы не знаете, что это такое, вы можете заменить его наalert()
источник
Простой ответ заключается в том, что это
[object]
указывает на объект-хост, у которого нет внутреннего класса. Объект хоста - это объект, который не является частью реализации ECMAScript, с которой вы работаете, но предоставляется хостом в качестве расширения. Модель DOM является распространенным примером объектов хоста, хотя в большинстве новых реализаций объекты DOM наследуются от собственного объекта и имеют имена внутренних классов (например, HTMLElement , Window и т. Д.). Запатентованный IE ActiveXObject - еще один пример хост-объекта.[object]
чаще всего встречается при предупреждении объектов DOM в Internet Explorer 7 и ниже, поскольку они являются объектами хоста, не имеющими внутреннего имени класса.Получить «тип» (внутренний класс) объекта можно с помощью
Object.prototype.toString
. Спецификация требует, чтобы он всегда возвращал строку в формате[object [[Class]]]
, где[[Class]]
- внутреннее имя класса, такое как Object , Array , Date , RegExp и т. Д. Вы можете применить этот метод к любому объекту (включая объекты хоста), используяМногие
isArray
реализации используют этот метод, чтобы определить, действительно ли объект является массивом (хотя в IE он не такой надежный, как в других браузерах ).В ECMAScript 3 вы можете перебирать перечислимые свойства с помощью
for...in
цикла. Обратите внимание, что большинство встроенных свойств не перечислить. То же самое и с некоторыми хост-объектами. В ECMAScript 5 вы можете получить массив, содержащий имена всех ненаследуемых свойств, используяObject.getOwnPropertyNames(obj)
. Этот массив будет содержать неперечислимые и перечислимые имена свойств.источник
Надеюсь, это не считается спамом. После бесконечных сеансов отладки я скромно написал функцию: http://github.com/halilim/Javascript-Simple-Object-Inspect
использование
или
источник
Загрузите FireBug для Mozilla Firefox.
использовать
console.log(obj);
источник
console.log
столь же эффективен, вы можете щелкнуть по объекту в журнале, чтобы в любом случае получить "Spotlight.js - отличная библиотека для итерации по объекту окна и другим объектам хоста в поисках определенных вещей.
Вам это понравится.
источник
Сканируемый объект для первого ввода определенной опоры:
источник