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

瀏覽器相容性

另見