Ich versuche, einen zurückgegebenen Wert von einer Funktion zu alarmieren, und erhalte dies in der Warnung:
[object Object]
Hier ist der JavaScript-Code:
<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
ist die Funktion, die ich überprüfen möchte.
javascript
jquery
Prady
quelle
quelle
Antworten:
Die Standardkonvertierung von einem Objekt in eine Zeichenfolge ist
"[object Object]"
.Wenn Sie mit jQuery-Objekten arbeiten, möchten Sie dies möglicherweise tun
um die ID des Elements zu drucken.
Wie in den Kommentaren erwähnt, sollten Sie die in Browsern wie Firefox oder Chrome enthaltenen Tools verwenden, um Objekte zu überprüfen, indem Sie
console.log(whichIsVisible())
stattdessen ausführenalert
.Nebenbemerkung : IDs sollten nicht mit Ziffern beginnen.
quelle
Wie andere angemerkt haben, ist dies die Standardserialisierung eines Objekts. Aber warum ist es so
[object Object]
und nicht nur[object]
?Das liegt daran, dass es in Javascript verschiedene Arten von Objekten gibt!
stringify(function (){})
->[object Function]
stringify([])
->[object Array]
stringify(/x/)
->[object RegExp]
stringify(new Date)
->[object Date]
stringify({})
->[object Object]
Das liegt daran, dass die Konstruktorfunktion aufgerufen wird
Object
(mit einem Großbuchstaben "O") und der Begriff "Objekt" (mit einem kleinen "o") sich auf die strukturelle Natur des Dings bezieht.Wenn Sie in Javascript von "Objekten" sprechen, meinen Sie normalerweise " Objektobjekte " und nicht die anderen Typen.
wo
stringify
sollte das so aussehen:quelle
thingy
JSON.stringify
, dass jemand einen falschen Eindruck hinterlassen kann.Object.prototype.toString.call(undefined)
gibt[object Undefined]
?[object Object]
ist die Standard-toString-Darstellung eines Objekts in Javascript.Wenn Sie die Eigenschaften Ihres Objekts kennenlernen möchten, gehen Sie einfach wie folgt vor:
In Ihrem speziellen Fall erhalten Sie ein jQuery-Objekt. Versuchen Sie stattdessen Folgendes:
Dies sollte die ID des sichtbaren Elements warnen.
quelle
Dies ist der Wert, der von der
toString()
Funktion dieses Objekts zurückgegeben wird.Ich verstehe, was Sie versuchen, weil ich gestern Ihre Frage beantwortet habe , welche Div sichtbar ist. :)
Die
whichIsVisible()
Funktion gibt ein tatsächliches jQuery-Objekt zurück, da ich dachte, das wäre programmatisch nützlicher. Wenn Sie diese Funktion zum Debuggen verwenden möchten, können Sie Folgendes tun:Das heißt, Sie sollten wirklich einen richtigen Debugger verwenden, anstatt zu
alert()
versuchen, ein Problem zu debuggen. Wenn Sie Firefox verwenden, ist Firebug ausgezeichnet. Wenn Sie IE8, Safari oder Chrome verwenden, verfügen sie über integrierte Debugger.quelle
Sie können den Wert in [Objekt Objekt] so sehen
Versuchen Sie es so
Referenz
https://off.tokyo/blog/react-native-object-object/
quelle
Grundlagen
Sie wissen es vielleicht nicht, aber wenn wir in JavaScript mit Zeichenfolgen, Zahlen oder booleschen Grundelementen interagieren, betreten wir eine verborgene Welt von Objektschatten und Zwang.
Zeichenfolge, Zahl, Boolescher Wert, Null, undefiniert und Symbol.
In JavaScript gibt es 7 Urtyp:
undefined
,null
,boolean
,string
,number
,bigint
undsymbol
. Alles andere ist ein Objekt. Die primitiven Typenboolean
,string
undnumber
können durch ihr Objekt Pendants gewickelt werden. Diese Objekte sind Instanzen von derBoolean
,String
undNumber
Konstrukteure sind.Wenn Grundelemente keine Eigenschaften haben, warum wird
"this is a string".length
ein Wert zurückgegeben?Weil JavaScript leicht zwischen Grundelementen und Objekten zwingt. In diesem Fall wird der Zeichenfolgenwert zu einem Zeichenfolgenobjekt gezwungen, um auf die Eigenschaftslänge zuzugreifen. Das String-Objekt wird nur für den Bruchteil einer Sekunde verwendet, danach wird es den Göttern der Müllabfuhr geopfert - aber im Geiste der TV-Entdeckungsshows werden wir die schwer fassbare Kreatur fangen und für weitere Analysen aufbewahren ...
Um dies weiter zu demonstrieren, betrachten Sie das folgende Beispiel, in dem wir dem String-Konstruktor-Prototyp eine neue Eigenschaft hinzufügen.
Auf diese Weise haben Grundelemente Zugriff auf alle Eigenschaften (einschließlich Methoden), die von ihren jeweiligen Objektkonstruktoren definiert wurden.
Wir haben also gesehen, dass primitive Typen bei Bedarf angemessen zu ihrem jeweiligen Objekt-Gegenstück gezwungen werden.
Analyse der
toString()
MethodeBetrachten Sie den folgenden Code
Wie oben erläutert, geschieht das, was wir tun, wenn wir eine
toString()
Methode für einen primitiven Typ aufrufen , sie in ihr Objektgegenstück gezwungen, bevor sie die Methode aufrufen kann.dh
myNumber.toString()
ist äquivalentNumber.prototype.toString.call(myNumber)
und ähnlich für andere primitive Typen.Was aber, wenn anstelle der Übergabe des primitiven Typs an die
toString()
Methode des entsprechenden Gegenstücks zur Objektkonstruktorfunktion der primitive Typ als Parameter an dietoString()
Methode des Objektfunktionskonstruktors (Object.prototype.toString.call(x)
) übergeben wird?Schauen Sie sich Object.prototype.toString () genauer an
Gemäß der Dokumentation werden beim Aufrufen der toString-Methode die folgenden Schritte ausgeführt:
Verstehen Sie dies anhand des folgenden Beispiels
Referenzen: 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 / das geheime Leben von Javascript-Primitiven /
quelle
[object Object]
ist die Standard-Zeichenfolgendarstellung eines JavaScriptObject
. Es ist das, was Sie erhalten, wenn Sie diesen Code ausführen:Sie können die Standarddarstellung ändern, indem Sie die
toString
Methode wie folgt überschreiben :quelle
[object Object]
Saite kam.Sie haben ein Javascript-Objekt
$1
und$2
sind jquery Objekte, vielleicht verwendenalert($1.text());
, um Text oderalert($1.attr('id');
etc ...du musst behandeln
$1
und$2
jQuery-Objekte mögen.quelle
Sie versuchen, ein Objekt zurückzugeben. Da es keine gute Möglichkeit gibt, ein Objekt als Zeichenfolge darzustellen, wird der
.toString()
Wert des Objekts automatisch als festgelegt"[object Object]"
.quelle