阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JS Symbol.match

      **Symbol.match **指定了匹配的是正则表达式而不是字符串。String.prototype.match() 方法会调用此函数。

      The source for this interactive example is stored in a GitHub repository. If you’d like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.

      描述

      此函数还用于标识对象是否具有正则表达式的行为。比如, String.prototype.startsWith()String.prototype.endsWith()String.prototype.includes() 这些方法会检查其第一个参数是否是正则表达式,是正则表达式就抛出一个TypeError。现在,如果 match symbol 设置为 false(或者一个 假值),就表示该对象不打算用作正则表达式对象。

      Symbol.match 属性的属性特性:
      writable
      enumerable
      configurable

      示例

      禁止表达式检查

      下面代码会抛出一个 TypeError

      "/bar/".startsWith(/bar/); 
      
      // Throws TypeError, 因为 /bar/ 是一个正则表达式
      // 且 Symbol.match 没有修改。
      

      但是,如果你将 Symbol.match 置为 false,使用 match 属性的表达式检查会认为该象不是正则表达式对象。startsWithendsWith 方法将不会抛出 TypeError

      var re = /foo/;
      re[Symbol.match] = false;
      "/foo/".startsWith(re); // true
      "/baz/".endsWith(re);   // false
      
      

      规范

      SpecificationStatusComment
      ECMAScript 2015 (6th Edition, ECMA-262)Symbol.matchStandardInitial definition.
      ECMAScript Latest Draft (ECMA-262)Symbol.matchDraft

      相关链接

      目录
      目录