JavaScript - Symbol.search 属性
JavaScript 中的 Symbol.search 属性是一个特殊的符号值,用作常用符号的键。此符号用作对象的属性键,用于定义在字符串中搜索的自定义行为。它主要与正则表达式和 String.prototype.search() 方法结合使用。
当 Symbol.search 属性用作对象的方法时,它定义了对象在其 search() 方法被调用时的行为。默认情况下,search() 方法会在字符串中搜索指定的值,并返回第一个匹配项的索引,如果找不到该值,则返回 -1。
语法
以下是 JavaScript Symbol.search 属性的语法 -
[Symbol.search](string)
参数
此属性仅接受一个参数,即字符串。
返回值
此属性返回匹配字符串的位置,否则,如果未找到匹配项,则返回 '-1'。
示例
示例 1
让我们看下面的示例,我们将创建一个自定义对象,其中包含一个利用符号.搜索
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
const x = {
[Symbol.search]: function(string, searchValue) {
return string.indexOf(searchValue);
}
};
const a = "Welcome, TutorialsPoint";
document.write(x[Symbol.search](a, "TutorialsPoint"));
</script>
</body>
</html>
如果我们执行上述程序,它将在网页上显示该数字。
示例 2
考虑另一种场景,我们将使用带有自定义类的 Symbol.search。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
class x {
constructor(value) {
this.value = value;
}
[Symbol.search](string) {
return string.indexOf(this.value);
}
}
const a = new x('EveryOne');
document.write('Welcome EveryOne'.search(a));
</script>
</body>
</html>
执行上述脚本后,网页上会显示一个数字。
示例 3
在下面的示例中,如果未找到匹配项,我们将返回"-1"。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
const a = " Welcome To The TutorialsPoint";
const x = /is/;
Symbol.search = function(string, pattern) {
const index = string.indexOf(x);
return index === -1 ? -1 : index;
};
document.write(a.search(x));
</script>
</body>
</html>
当我们执行脚本时,它会在网页上显示一个数字。
示例 4
以下是我们将采用正则表达式并执行匹配的示例。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
const x = {
[Symbol.search](string) {
const regex = /The/;
return regex.exec(string).index;
}
};
const str = "Welcome To The World";
document.write(str.search(x));
</script>
</body>
</html>
执行上述脚本后,将弹出输出窗口,显示网页上的数字。

