- 区分基本字符串和字符串对象。字符串字面量 (通过单引号或双引号定义) 和 直接调用 String 方法(没有通过 new 生成字符串对象实例)的字符串都是基本字符串。
1var s_prim = "foo"; 2var s_obj = new String(s_prim); 3 4console.log(typeof s_prim); // Logs "string" 5console.log(typeof s_obj); // Logs "object"
- 当基本字符串需要调用一个字符串对象才有的方法或者查询值的时候(基本字符串是没有这些方法的),JavaScript 会自动将基本字符串转化为字符串对象并且调用相应的方法或者执行查询。
-
当使用 eval 时,基本字符串和字符串对象会产生不同的结果。eval 会对基本字符串进行计算; 而字符串对象则被看作对象处理, 返回对象本身。
1s1 = "2 + 2"; // creates a string primitive 2s2 = new String("2 + 2"); // creates a String object 3console.log(eval(s1)); // returns the number 4 4console.log(eval(s2)); // returns the string "2 + 2"
- 使用 valueOf 方法将字符串对象转换为其对应的基本字符串
1console.log(eval(s2.valueOf())); // returns the number 4