JavaScript - 字符串原语值(String Primitive)与字符串对象(String Object)
主要参考
String Primitive与String Object的直观区分
-
String Primitive包括:
-
由引号包裹的字符串值,如
"abc"; -
转换函数
String()返回的字符串值,如String("abc")
-
-
String Object包括:
- 通过
new操作符创建的String对象,如new String("abc")
- 通过
-
直观区别:类型不同
typeof "abc"; // string typeof String("abc"); // string typeof new String("abc"); // object
应用区别
主要体现在作为eval()的参数值时,结果返回不同(当然慎用eval())
-
String Primitive将被作为源码执行:
eval("2 + 2"); // number 4 -
String Object仅作为对象被传入后原样返回
eval(new String("2 + 2")); // object String { "2 + 2" }
转换关系
-
String Primitive -> String Object
当需要调用String对象的方法或执行属性查找时,JavaScript会自动将String Primitive转换为String Object,因此可直接调用相应方法:
"abc".charAt(1); // b -
String Object -> String Primitive
-
通过转换方法
String()转换:typeof String(new String("abc")); // string -
通过对象未被重载的
valueOf()或toString()方法typeof new String("abc").toString(); // string typeof new String("abc").valueOf(); // string
-

浙公网安备 33010602011771号