Question

Cette correspondance simple regex renvoie une chaîne au lieu d'un objet sur tous les navigateurs, mais la dernière firefox ...

        text = "language. Filename: My Old School Yard.avi. File description: File size: 701.54 MB. View on Megavideo. Enter this, here:"
    name = text.match(/(Filename:)(.*) File /);
    alert(typeof(name));

pour autant que je sais la fonction match est supposé renvoyer un objet (Array). Quelqu'un at-il rencontré ce problème?

Était-ce utile?

La solution

L'expression rationnelle match procédé fait retourner un tableau, mais tableaux en JavaScript sont simplement des objets héritant de Array.prototype, par exemple:

var array = "foo".match(/foo/); // or [];,  or new Array();

typeof array; // "object"
array instanceof Array; // true
Object.prototype.toString.call(array); // "[object Array]"

L'opérateur typeof retournera "object" parce qu'il peut » t la distinction entre un objet et un réseau ordinaire.

Dans la deuxième ligne j'utiliser l'opérateur instanceof pour prouver que l'objet est en fait un tableau, mais cet opérateur a problèmes connus lorsque l'on travaille dans un environnement inter-cadres.

Dans la troisième ligne J'utilise la méthode Object.prototype.toString , qui retourne une chaîne contenant le [[Class]] propriété interne, cette propriété est une valeur qui indique la type de l'objet, un moyen de détecter beaucoup plus sûr si un objet est un tableau ou non.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top