JavaScript Guidebook

JavaScript 完全知识体系

Symbol.split

对象的 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 方法的行为。