Em JavaScript / jQuery, se eu alert
algum objeto, recebo [object]
ou [object Object]
Existe alguma maneira de saber:
qual é a diferença entre esses dois objetos
que tipo de objeto é este
o que todas as propriedades que este objeto contém e os valores de cada propriedade
?
javascript
jquery
Saiful
fonte
fonte
Respostas:
Você pode pesquisar as chaves e os valores de um objeto invocando o
for in
loop nativo do JavaScript :ou usando o
.each()
método jQuery :Com exceção de seis tipos primitivos , tudo em ECMA- / JavaScript é um objeto. Arrays; funções; tudo é um objeto. Mesmo a maioria desses primitivos também são objetos com uma seleção limitada de métodos. Eles são lançados em objetos sob o capô, quando necessário. Para saber o nome da classe base, você pode invocar o
Object.prototype.toString
método em um objeto, assim:O acima será gerado
[object Array]
.Existem vários outros nomes de classe, como
[object Object]
,[object Function]
,[object Date]
,[object String]
,[object Number]
,[object Array]
, e[object Regex]
.fonte
typeof new String("foo");
produz "objeto", é um valor primitivo embrulhado, enquantotypeof "foo";
produz "string". Ver tambémvar str = 'primitive'; str.foo = 'bar'; /*wouldn't work*/
ao passo que,var oStr = new String('string object'); oStr.foo = 'bar'; /*works*/
se você for abstraí-lo e chamá-los de todos os objetos, poderá se safar pensando em primitivos como objetos primitivos, mas isso não é equivalente à superclasse de verdadeiros objetos JavaScript.console.log
para inspecionar objetosPara obter a lista de propriedades / valores do objeto:
No Firefox - Firebug:
JS padrão para obter chaves de objeto emprestadas de Slashnick :
Editar% s:
<object>
acima deve ser substituído pela referência de variável ao objeto.console.log()
deve ser usado no console, se você não tiver certeza do que é, você pode substituí-lo por umalert()
fonte
A resposta simples é que
[object]
indica um objeto host que não possui uma classe interna. Um objeto de host é um objeto que não faz parte da implementação ECMAScript com a qual você está trabalhando, mas é fornecido pelo host como uma extensão. O DOM é um exemplo comum de objetos de host, embora na maioria das implementações mais recentes os objetos DOM sejam herdados do objeto nativo e tenham nomes de classe internos (como HTMLElement , Window , etc). O ActiveXObject proprietário do IE é outro exemplo de um objeto host.[object]
é mais comumente visto ao alertar objetos DOM no Internet Explorer 7 e inferior, uma vez que são objetos de host que não têm nome de classe interno.Você pode obter o "tipo" (classe interna) de objeto usando
Object.prototype.toString
. A especificação exige que sempre retorne uma string no formato[object [[Class]]]
, onde[[Class]]
é o nome da classe interna, como Object , Array , Date , RegExp , etc. Você pode aplicar este método a qualquer objeto (incluindo objetos de host), usandoMuitas
isArray
implementações usam essa técnica para descobrir se um objeto é realmente um array (embora não seja tão robusto no IE quanto em outros navegadores ).No ECMAScript 3, você pode iterar sobre propriedades enumeráveis usando um
for...in
loop. Observe que a maioria das propriedades integradas não são enumeráveis. O mesmo é verdade para alguns objetos hospedeiros. No ECMAScript 5, você pode obter uma matriz contendo os nomes de todas as propriedades não herdadas usandoObject.getOwnPropertyNames(obj)
. Esta matriz conterá nomes de propriedade não enumeráveis e enumeráveis.fonte
Espero que isso não conte como spam. Humildemente acabei escrevendo uma função após intermináveis sessões de depuração: http://github.com/halilim/Javascript-Simple-Object-Inspect
Uso
ou
fonte
Obtenha o FireBug para Mozilla Firefox.
usar
console.log(obj);
fonte
console.log
é tão eficaz, você pode clicar no objeto no log para obter o "dir" de qualquer maneira ...Spotlight.js é uma ótima biblioteca para iteração sobre o objeto janela e outros objetos host procurando por certas coisas.
Você vai gostar por isso.
fonte
Escaneando o objeto para a primeira instância de um objeto determinado:
fonte