JavaScript - Symbol.search 属性



在 JavaScript 中,Symbol.search 属性是一个特殊的符号值,用作知名符号的键。此符号用作对象上的属性键,以定义在字符串中搜索的自定义行为。它主要与正则表达式和 String.prototype.search() 方法结合使用。

当 Symbol.search 属性用作对象上的方法时,它定义了在调用其 search() 方法时对象的行为。默认情况下,search() 方法在字符串中搜索指定的值,并返回第一次出现的位置索引,如果找不到该值,则返回 -1。

语法

以下是 JavaScript Symbol.search 属性的语法:

[Symbol.search](string)

参数

此属性仅接受一个参数,即字符串。

返回值

此属性返回字符串匹配的位置,如果未找到匹配项,则返回“-1”。

示例

示例 1

让我们来看下面的例子,我们将创建一个使用 Symbol.search 的自定义方法的对象。

<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>

执行上述脚本后,将弹出输出窗口,在网页上显示数字。

广告