Pourquoi utiliser Object.prototype.toString au lieu de Function.prototype.toString ou autres ? Ceci est lié à leur méthode d'interprétation toString. Voici l'explication de Object.prototype.toString dans ECMA :
Objet.prototype.toString()
Lorsque la méthode toString est appelée, les étapes suivantes sont effectuées :
1. Obtenez la propriété [[Class]] de cet objet.
2. Calculez une valeur de chaîne en concaténant les trois chaînes « [objet », Résultat (1) et « ] ».
3. Retour du résultat (2)
Le processus est simplement le suivant : 1. Obtenez le nom de classe (type d'objet) de l'objet. 2. Combinez ensuite [objet, nom de classe obtenu] et revenez.
ECMA a la description suivante de Array :
La propriété [[Class]] de l'objet nouvellement construit est définie sur « Array ».
On utilise donc le code suivant pour détecter le tableau :
function isArray(o) { return Object.prototype.toString.call(o) === '[object Array]' }
Cette méthode résout non seulement le problème des instances de pages croisées, mais résout également le problème de la méthode de détection des attributs. C'est vraiment un coup et une bonne solution.
De plus, cette solution peut également être appliquée pour déterminer des objets de type Date, Fonction et autres.
Il existe plusieurs autres méthodes :
var arr = []; return arr instanceof Array;
S'il existe d'autres bonnes méthodes, veuillez les publier.