J'essaye d'alerter une valeur retournée d'une fonction et j'obtiens ceci dans l'alerte:
[object Object]
Voici le code JavaScript:
<script type="text/javascript">
$(function ()
{
var $main = $('#main'),
$1 = $('#1'),
$2 = $('#2');
$2.hide(); // hide div#2 when the page is loaded
$main.click(function ()
{
$1.toggle();
$2.toggle();
});
$('#senddvd').click(function ()
{
alert('hello');
var a=whichIsVisible();
alert(whichIsVisible());
});
function whichIsVisible()
{
if (!$1.is(':hidden')) return $1;
if (!$2.is(':hidden')) return $2;
}
});
</script>
whichIsVisible
est la fonction que j'essaye de vérifier.
javascript
jquery
Prady
la source
la source
Réponses:
La conversion par défaut d'un objet en chaîne est
"[object Object]"
.Comme vous traitez avec des objets jQuery, vous voudrez peut-être faire
pour imprimer l'ID de l'élément.
Comme mentionné dans les commentaires, vous devez utiliser les outils inclus dans les navigateurs comme Firefox ou Chrome pour introspecter les objets en faisant
console.log(whichIsVisible())
au lieu dealert
.Remarque : les identifiants ne doivent pas commencer par des chiffres.
la source
Comme d'autres l'ont noté, il s'agit de la sérialisation par défaut d'un objet. Mais pourquoi
[object Object]
et pas seulement[object]
?En effet, il existe différents types d'objets en Javascript!
stringify(function (){})
->[object Function]
stringify([])
->[object Array]
stringify(/x/)
->[object RegExp]
stringify(new Date)
->[object Date]
stringify({})
->[object Object]
C'est parce que la fonction constructeur est appelée
Object
(avec un "O" majuscule), et le terme "objet" (avec un petit "o") se réfère à la nature structurelle de l'objet.Habituellement, lorsque vous parlez d '"objets" en Javascript, vous voulez dire en fait " objets objets ", et non les autres types.
où
stringify
devrait ressembler à ceci:la source
thingy
JSON.stringify
, quelqu'un peut prendre une mauvaise impression.Object.prototype.toString.call(undefined)
donne[object Undefined]
?[object Object]
est la représentation toString par défaut d'un objet en javascript.Si vous voulez connaître les propriétés de votre objet, il vous suffit de les parcourir comme ceci:
Dans votre cas particulier, vous obtenez un objet jQuery. Essayez plutôt de faire ceci:
Cela devrait alerter l'id de l'élément visible.
la source
C'est la valeur renvoyée par la
toString()
fonction de cet objet .Je comprends ce que vous essayez de faire, car j'ai répondu hier à votre question sur la détermination des div visibles. :)
La
whichIsVisible()
fonction renvoie un objet jQuery réel, car je pensais que ce serait plus utile par programme . Si vous souhaitez utiliser cette fonction à des fins de débogage, vous pouvez simplement faire quelque chose comme ceci:Cela dit, vous devriez vraiment utiliser un débogueur approprié plutôt que
alert()
si vous essayez de déboguer un problème. Si vous utilisez Firefox, Firebug est excellent. Si vous utilisez IE8, Safari ou Chrome, ils ont des débogueurs intégrés.la source
Vous pouvez voir la valeur dans [objet objet] comme ceci
Essayez comme ça
référence
https://off.tokyo/blog/react-native-object-object/
la source
Basiques
Vous ne le savez peut-être pas mais, en JavaScript, chaque fois que nous interagissons avec des chaînes, des nombres ou des primitives booléennes, nous entrons dans un monde caché d'ombres d'objets et de coercition.
string, number, boolean, null, undefined et symbol.
En JavaScript , il y a 7 types primitifs:
undefined
,null
,boolean
,string
,number
,bigint
etsymbol
. Tout le reste est un objet. Les types primitifsboolean
,string
etnumber
peuvent être enveloppés par leurs homologues de l' objet. Ces objets sont des instances duBoolean
,String
et lesNumber
constructeurs respectivement.Si les primitives n'ont pas de propriétés, pourquoi
"this is a string".length
renvoie-t-elle une valeur?Parce que JavaScript contraindra facilement les primitifs et les objets. Dans ce cas, la valeur de chaîne est forcée à un objet chaîne afin d'accéder à la longueur de la propriété. L'objet string n'est utilisé que pendant une fraction de seconde, après quoi il est sacrifié aux dieux de la collecte des ordures - mais dans l'esprit des émissions de découverte télévisée, nous allons piéger la créature insaisissable et la préserver pour une analyse plus approfondie ...
Pour illustrer cela davantage, considérons l'exemple suivant dans lequel nous ajoutons une nouvelle propriété au prototype du constructeur String.
Par ce moyen, les primitives ont accès à toutes les propriétés (y compris les méthodes) définies par leurs constructeurs d'objets respectifs.
Nous avons donc vu que les types primitifs contraindront de manière appropriée leur homologue Object respectif si nécessaire.
Analyse de
toString()
méthodeConsidérez le code suivant
Comme discuté ci-dessus, ce qui se passe vraiment, c'est lorsque nous appelons une
toString()
méthode sur un type primitif, elle doit être forcée dans son homologue objet avant de pouvoir invoquer la méthode.ie
myNumber.toString()
équivaut àNumber.prototype.toString.call(myNumber)
et de même pour les autres types primitifs.Mais que se passe-t-il si, au lieu que le type primitif soit passé dans la
toString()
méthode de son homologue de la fonction de constructeur Object correspondante, nous forçons le type primitif à être passé en tant que paramètre sur latoString()
méthode du constructeur de la fonction Object (Object.prototype.toString.call(x)
)?Regardons de plus près Object.prototype.toString ()
Selon la documentation , lorsque la méthode toString est appelée, les étapes suivantes sont effectuées:
Comprenez cela à partir de l'exemple suivant
Références: https://es5.github.io/x15.2.html#x15.2.4.2 https://es5.github.io/x9.html#x9.9 https://javascriptweblog.wordpress.com/ 2010/09/27 / la-vie-secrète-des-primitives-javascript /
la source
[object Object]
est la représentation sous forme de chaîne par défaut d'un JavaScriptObject
. C'est ce que vous obtiendrez si vous exécutez ce code:Vous pouvez modifier la représentation par défaut en remplaçant la
toString
méthode comme suit:la source
[object Object]
chaîne.Vous avez un objet javascript
$1
et$2
sont des objets jquery, peut-être utilisésalert($1.text());
pour obtenir du texte oualert($1.attr('id');
etc ...vous devez traiter
$1
et$2
aimer les objets jQuery.la source
Vous essayez de renvoyer un objet. Comme il n'existe aucun moyen efficace de représenter un objet sous forme de chaîne, la
.toString()
valeur de l'objet est automatiquement définie comme"[object Object]"
.la source