Dire che ho il seguente elemento:Che tipo di oggetto appare nella console come [oggetto testo]?
<p id="thingy">Here is some <em>emphasized</em> text!</p>
In una console Javascript, vado a prendere il suo contenuto con jQuery:
> var theContents = $('<p id="thingy">Here is some <em>emphasized</em> text!</p>').contents();
theContents
è ora una matrice che assomiglia a questo:
> theContents
["Here is some ", <em>emphasized</em>, " text!"]
Fin qui tutto bene; sembra essere un array, dove elementi 0
e 2
sono stringhe, ed elemento 1
è un oggetto jQuery. Se io in uscita solo il primo elemento, sembra confermare la mia ipotesi:
> theContents[0]
"Here is some "
Tuttavia, se provo per concatenare con un'altra stringa, vedo che mi manca un po 'di comprensione:
> 'Hello! ' + contents[0];
"Hello! [object Text]"
Quindi quella variabile sembra una stringa, ma in realtà è una specie di oggetto. Del resto, l'oggetto jQuery nel mezzo non appare come un oggetto regolare, neanche; si presenta come il grezzo markup.
Another question fa riferimento lo stesso problema, ma in realtà non lo spiegano. Ho scoperto che posso usare contents[0].textContent
per risolvere il mio vero problema, ma che ancora non mi aiuta a capire esattamente cosa sta succedendo qui. Qualcuno può spiegarmi in dettaglio perché tutto questo si sta comportando così com'è?
+1: Una piccola dimostrazione rapida: http://jsfiddle.net/fwysq/2/ –