Метод RegExp match
возвращает массив, но массивы в JavaScript - это просто объекты, которые наследуются от Array.prototype
, например ::
var array = "foo".match(/foo/); // or [];, or new Array();
typeof array; // "object"
array instanceof Array; // true
Object.prototype.toString.call(array); // "[object Array]"
Оператор typeof
вернет "object"
, поскольку он не может различить обычный объект и массив.
Во второй строке я использую оператор instanceof
, чтобы доказать, что объект на самом деле является массивом, но этот оператор имеет известных проблем при работе в кросс-фреймовых средах.
В третьей строке я использую метод Object.prototype.toString
, который возвращает строку, содержащую внутреннее свойство [[Class]]
, это свойство является значением, указывающим вид объекта, гораздо более безопасный способ определить, является ли объект массивом или нет.