RegExp.prototype[@@split]()

Вы читаете английскую версию этой статьи, так как пока нет перевода на данный язык. Помогите нам перевести эту статью!

[@@split]() метод делит объект String  в массив сторок, путём разбиения строки на подстроки.

Синтаксис

regexp[Symbol.split](str[, limit])

Параметры

str
Цель разбиения.
limit

Необязательное. Целое число ограничивающее кол-во рабиений. [@@split]() метод разбивает все совпадения this RegExp шаблона, до тех пор пока не достигнет числа limit или строка будет короче this шаблона.

Возвращаемое значение

Array содержит подстроки как элементы.

Описание

Этот метод вызывает String.prototype.split(), если аргумент separator объект RegExp. Для примера, два данных выражения возвращают одинаковый результат.

'a-b-c'.split(/-/);

/-/[Symbol.split]('a-b-c');

Этот метод существует для кастомизации поведения (разбиения) подкласса RegExp.

Если аргумент str не объект типа RegExp, метод String.prototype.split() не вызывается, так же не создается объект типа RegExp.

Примеры

Прямой вызов

Этот метод может быть использован, так же как String.prototype.split(), кроме случаев когда this отличаются и аргументы идут в разном порядке.

var re = /-/g;
var str = '2016-01-02';
var result = re[Symbol.split](str);
console.log(result);  // ["2016", "01", "02"]

Использование @@split в подклассах

Подклассы RegExp могут переопределить [@@split]() для изменения дефольтного поведения.

class MyRegExp extends RegExp {
  [Symbol.split](str, limit) {
    var result = RegExp.prototype[Symbol.split].call(this, str, limit);
    return result.map(x => "(" + x + ")");
  }
}

var re = new MyRegExp('-');
var str = '2016-01-02';
var result = str.split(re); // String.prototype.split calls re[@@split].
console.log(result); // ["(2016)", "(01)", "(02)"]

Specifications

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'RegExp.prototype[@@split]' в этой спецификации.
Стандарт Initial definition.
ECMAScript Latest Draft (ECMA-262)
Определение 'RegExp.prototype[@@split]' в этой спецификации.
Черновик  

Browser compatibility

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
@@splitChrome Полная поддержка 50Edge Нет поддержки НетFirefox Полная поддержка 49IE Нет поддержки НетOpera Полная поддержка 37Safari Полная поддержка ДаWebView Android Полная поддержка 50Chrome Android Полная поддержка 50Firefox Android Полная поддержка 49Opera Android Полная поддержка 37Safari iOS Полная поддержка ДаSamsung Internet Android Полная поддержка 5.0nodejs Полная поддержка 6.0.0

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки

See also