Symbol.replace

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

Symbol.replace 静态数据属性代表 知名 Symbol Symbol.replaceString.prototype.replace()String.prototype.replaceAll() 方法会在其第一个参数上查找此 Symbol,用于替换与当前对象匹配的子字符串的方法。

有关更多信息,请参阅 RegExp.prototype[Symbol.replace]()String.prototype.replace()String.prototype.replaceAll()

试一试

class Replace1 {
  constructor(value) {
    this.value = value;
  }
  [Symbol.replace](string) {
    return `s/${string}/${this.value}/g`;
  }
}

console.log("foo".replace(new Replace1("bar")));
// Expected output: "s/foo/bar/g"

知名 Symbol Symbol.replace

Symbol.replace 的属性特性
可写
可枚举
可配置

示例

使用 Symbol.replace

js
class CustomReplacer {
  constructor(value) {
    this.value = value;
  }
  [Symbol.replace](string) {
    return string.replace(this.value, "#!@?");
  }
}

console.log("football".replace(new CustomReplacer("foo"))); // "#!@?tball"

规范

规范
ECMAScript® 2026 语言规范
# sec-symbol.replace

浏览器兼容性

另见