Dans JavaScript / jQuery, si j'ai alert
un objet, j'obtiens soit [object]
ou [object Object]
Y a-t-il un moyen de savoir:
quelle est la différence entre ces deux objets
quel type d'objet est-ce
ce que contient toutes les propriétés cet objet et les valeurs de chaque propriété
?
javascript
jquery
Saiful
la source
la source
Réponses:
Vous pouvez rechercher les clés et les valeurs d'un objet en invoquant la
for in
boucle native de JavaScript :ou en utilisant la
.each()
méthode de jQuery :À l'exception de six types primitifs , tout dans ECMA- / JavaScript est un objet. Tableaux; les fonctions; tout est un objet. Même la plupart de ces primitives sont en fait également des objets avec une sélection limitée de méthodes. Ils sont coulés dans des objets sous le capot, si nécessaire. Pour connaître le nom de la classe de base, vous pouvez appeler la
Object.prototype.toString
méthode sur un objet, comme ceci:Ce qui précède sortira
[object Array]
.Il y a plusieurs autres noms de classe, comme
[object Object]
,[object Function]
,[object Date]
,[object String]
,[object Number]
,[object Array]
et[object Regex]
.la source
typeof new String("foo");
produit "objet", c'est une valeur primitive encapsulée , alors quetypeof "foo";
produit "chaîne". Voir aussivar str = 'primitive'; str.foo = 'bar'; /*wouldn't work*/
alors quevar oStr = new String('string object'); oStr.foo = 'bar'; /*works*/
si vous allez l'abstraire et les appeler tous objets, vous pouvez vous en sortir en pensant aux primitives comme des objets primitifs, mais ce n'est pas équivalent à la superclasse des vrais objets JavaScript.console.log
pour inspecter des objetsPour obtenir la liste des propriétés / valeurs des objets:
Dans Firefox - Firebug:
JS standard pour obtenir des clés d'objet empruntées à Slashnick :
Modifications:
<object>
dans ce qui précède doit être remplacé par la référence de variable à l'objet.console.log()
doit être utilisé dans la console, si vous n'êtes pas sûr de ce que c'est, vous pouvez le remplacer par unalert()
la source
La réponse simple est que cela
[object]
indique un objet hôte qui n'a pas de classe interne. Un objet hôte est un objet qui ne fait pas partie de l'implémentation ECMAScript avec laquelle vous travaillez, mais qui est fourni par l'hôte en tant qu'extension. Le DOM est un exemple courant d'objets hôtes, bien que dans la plupart des implémentations plus récentes, les objets DOM héritent de l'Object natif et ont des noms de classes internes (tels que HTMLElement , Window , etc.). ActiveXObject propriétaire d'IE est un autre exemple d'objet hôte.[object]
est le plus souvent observé lors de l'alerte d'objets DOM dans Internet Explorer 7 et versions antérieures, car ce sont des objets hôtes qui n'ont pas de nom de classe interne.Vous pouvez obtenir le "type" (classe interne) de l'objet en utilisant
Object.prototype.toString
. La spécification exige qu'elle renvoie toujours une chaîne au format[object [[Class]]]
, où[[Class]]
est le nom de classe interne tel que Object , Array , Date , RegExp , etc. Vous pouvez appliquer cette méthode à n'importe quel objet (y compris les objets hôtes), en utilisantDe nombreuses
isArray
implémentations utilisent cette technique pour découvrir si un objet est en fait un tableau (bien qu'il ne soit pas aussi robuste dans IE que dans d'autres navigateurs ).Dans ECMAScript 3, vous pouvez parcourir des propriétés énumérables à l'aide d'une
for...in
boucle. Notez que la plupart des propriétés intégrées ne sont pas énumérables. La même chose est vraie pour certains objets hôtes. Dans ECMAScript 5, vous pouvez obtenir un tableau contenant les noms de toutes les propriétés non héritées en utilisantObject.getOwnPropertyNames(obj)
. Ce tableau contiendra des noms de propriétés non énumérables et énumérables.la source
J'espère que cela ne compte pas comme du spam. J'ai humblement fini par écrire une fonction après des sessions de débogage interminables: http://github.com/halilim/Javascript-Simple-Object-Inspect
Usage
ou
la source
Obtenez FireBug pour Mozilla Firefox.
utilisation
console.log(obj);
la source
console.log
est tout aussi efficace, vous pouvez quand même cliquer sur l'objet dans le journal pour obtenir le "dir" ...Spotlight.js est une excellente bibliothèque pour parcourir l'objet window et d'autres objets hôtes à la recherche de certaines choses.
Vous l'aimerez pour cela.
la source
Analyse de l'objet pour la première entrée d'un accessoire déterminé:
la source