JavaScript中定义正则表达式为什么要用new来包装对象?
网上大多数教程里JS中定义正则表达式都会用到:var re=new RegExp(‘ABC’);
但是RegExp(‘ABC’)本身就是一个对象‘object’,为什么不直接用var re=RegExp(‘ABC’);?为什么还要用new来包装对象呢?有什么好处吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
使用构造函数形式时需要注意字符串中的转义符
\
的问题, 即new RegExp('\\w').toString() === /\w/.toString() >= true
。总结:一般情况下创建正则对象使用正则表达式使用字面量形式, 在需要灵活处理使用构造函数形式。
字面量 和 构造函数 的 ‘区别’
因为js的正则表达式是对象,需要用new操作符来进行构造,就像数组一样啊,RegExp可以理解为一个构造函数,最好的方式是使用
/abd/
来创建正则var fun=function(){
}
new fun();
fun();
这两个区别
这就跟new Date() new Array()等方法一个道理,建议题主可以再温习一下JS对象
RegExp是个构造函数RegExp,搞成构造器可以让你方便的持续操作new出来的对象,而且不会被另一个正则表达式影响。
new 不是用来“包装对象”,而是通过构造函数来创建对象时的关键字,“包装对象” 在 JavaScript 中有别的含义。var re=RegExp(‘ABC’); 等同于 var re = /ABC/;