Parce que classList
est un objet de type DOMTokenList
avec des méthodes redéfinies comme toString()
(c'est pourquoi alert(document.getElementById('p').classList)
montre une chaîne vide), etc.
Ainsi, lorsque vous exécutez if (document.getElementById('p').classList) {
vous avez réellement smth comme if (Object) { et dans ce cas passera. Pour assurer - voir typeof(document.getElementById('p').classList)
- ce sera collection
. Essayez également d'écrire dans la console document.getElementById('p').classList.__proto__
- vous verrez DOMTokenList
objet qui a un Prototype de lien vers le DOMTokenList
contructor (document.getElementById('p').classList.__proto__.constructor
).
En savoir plus sur DOMTokenList
- https://developer.mozilla.org/en/docs/Web/API/DOMTokenList
Si 'classList' existe comme un objet régulier JavaScript, alors pourquoi [ce] (http://jsfiddle.net/Mori/d3mjv/1/) alerte vide? comparer avec [ceci] (http://jsfiddle.net/Mori/d3mjv/2/). – Mori