对象的 Symbol.split
属性,指向一个方法,当该对象被 String.prototype.split
方法调用时,会返回该方法的返回值。
String.prototype.split(separator, limit);// 等同于separator[Symbol.split](this, limit);
class MySplitter {constructor(value) {this.value = value;}[Symbol.split](string) {let index = string.indexOf(this.value);if (index === -1) {return string;}return [string.substr(0, index), string.substr(index + this.value.length)];}}'foobar'.split(new MySplitter('foo')); // ['', 'bar']'foobar'.split(new MySplitter('bar')); // ['foo', '']'foobar'.split(new MySplitter('baz')); // 'foobar'
上面方法使用 Symbol.split
方法,重新定义了字符串对象的 split
方法的行为。