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

时间:2010-09-20 22:41:20

标签: javascript

我想知道何时使用文字以及何时使用对象来创建数据类型值。

例如

我何时使用这些:

/regexp/
"string"

当这些:

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

这些会给我相同的方法和属性吗?

2 个答案:

答案 0 :(得分:3)

当你想要连接存储在变量中的值时,

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"

总的来说,我认为你坚持文字是安全的。

答案 1 :(得分:1)

当您尝试使用其中一个文字(如对象)时,文字将在内部转换为对象(包装器应用于它),以便您访问要尝试使用的任何方法或属性:

var a = /regexp/
a.test(aString);

...基本上与:

相同
var a = new RegExp("regexp");
a.test(aString);

唯一的区别是,没有eval(),在运行时构造正则表达式的唯一方法是使用RegExp()

字符串也是如此:

var b = "abc";
b.length;

...与:

相同
var b = new String("abc");
b.length;

但是,typeof "ABC"typeof (new String("ABC"))不同。前者返回“string”而后者返回“object”。 (见评论)。

这几乎与偏好和可读性有关。没有太多程序员选择new String("ABC");"而不是"ABC",只是因为在扫描代码时更容易识别"ABC"。出于同样的原因,为什么写"ABC"更容易:更少的字符。对于正则表达式,由您决定使用哪个。

就个人而言,我使用"ABC"作为字符串(写字符少,易读,更常见等)