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;非常有趣,我从来不知道。谢谢!我将修改我的帖子。