Faites correspondre retournant une chaîne au lieu d'objet
-
21-09-2019 - |
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?
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.