Javascript 文字和对象-何时使用什么?

Javascript 文字和对象-何时使用什么?,javascript,Javascript,我想知道什么时候使用文字,什么时候使用对象来创建数据类型值 例如 我什么时候使用这些: /regexp/ "string" 当这些: new RegExp("regexp") new String("string") 这些将为我提供相同的方法和属性吗?当您尝试像对象一样使用这些文本中的一个时,该文本将在内部转换为对象(将包装应用于该对象),因此您可以访问尝试使用的任何方法或属性: var a = /regexp/ a.test(aString); 。。。基本上与以下内容相同: var a

我想知道什么时候使用文字,什么时候使用对象来创建数据类型值

例如

我什么时候使用这些:

/regexp/
"string"
当这些:

new RegExp("regexp")
new String("string")

这些将为我提供相同的方法和属性吗?

当您尝试像对象一样使用这些文本中的一个时,该文本将在内部转换为对象(将包装应用于该对象),因此您可以访问尝试使用的任何方法或属性:

var a = /regexp/
a.test(aString);
。。。基本上与以下内容相同:

var a = new RegExp("regexp");
a.test(aString);
var b = new String("abc");
b.length;
一个区别是,如果没有
eval()
,在运行时构造正则表达式的唯一方法就是使用
RegExp()

字符串也是如此:

var b = "abc";
b.length;
。。。同:

var a = new RegExp("regexp");
a.test(aString);
var b = new String("abc");
b.length;
但是,
typeof“ABC”
typeof(新字符串(“ABC”))
不同。前者返回“string”,而后者返回“object”。(见评论)

这主要是关于偏好和可读性。没有太多程序员选择新字符串(“ABC”);“而不是
“ABC”
,只是因为扫描代码时更容易识别
“ABC”
。这也是为什么写
“ABC”
更容易的原因:字符更少。对于正则表达式,再次由您决定使用哪个

就我个人而言,我对字符串使用
“ABC”
(要写的字符更少,更容易阅读,更常见,等等)。

new RegExp()

var x = "exp";
var regex = new RegExp("reg" + x);
不过,我不知道有什么理由不使用字符串文字

使用构造函数可能会得到意外结果的一个示例是在创建数组时

var arr = new Array( 3 ); // creates an Array with an initial length of 3

var arr = new Array( "3" ); // creates an Array with an initial length of
                            //    1 item that has the value "3"

总的来说,我认为您可以安全地使用文字。

永远不要使用“新字符串”。这不是一回事。试试这个:alert(typeof new String(“”);/“object”!@InfinitiesLoop;非常有趣,我从来不知道。谢谢!我将修改我的帖子。