构造函数
2023年02月10日
String()
String()
将参数强制转换为 String
类型
注意
"" + value
与 String(value)
与 ${value}
作用相同,因为它们使用的算法规则相同
语法
const result = String(value)
const result = `${value}`
const result = "" + value
规则
-
对于
String
类型: 则总是返回自己const value = "哈哈";
console.log(String(value), typeof String(value));
console.log(`${value}`, typeof `${value}`);
console.log("" + value, typeof ("" + value)); -
对于
undefined
类型: 返回"undefined"
const value = undefined;
console.log(String(value), typeof String(value)); // undefined string
console.log(`${value}`, typeof `${value}`); // undefined string
console.log("" + value, typeof ("" + value)); // undefined string -
对于
null
类型: 返回"null"
const value = null;
console.log(String(value), typeof String(value)); // null string
console.log(`${value}`, typeof `${value}`); // null string
console.log("" + value, typeof ("" + value)); // null string -
对于
Boolean
类型:true
返回"true"
;false
变成了"false"
const value = true;
console.log(String(value), typeof String(value)); // true string
console.log(`${value}`, typeof `${value}`); // true string
console.log("" + value, typeof ("" + value)); // true string -
对于
Number
类型: 通过解析它们来转换, 解析规则如下:-
使用与
toString(10)
相同的算法转换数字 -
使用与
toString(10)
相同的算法转换 BigInt
-
-
对于
Symbol
类型: 抛出TypeError
-
对于
Object
类型: 对象首先按顺序调用@@toPrimitive]()
(将string
作为hint
)、toString()
和valueOf()
方法将其转换为原始值。然后将生成的原始值转换为字符串。const value = {};
console.log(String(value), typeof String(value)); // [object Object] string
console.log(`${value}`, typeof `${value}`); // [object Object] string
console.log("" + value, typeof ("" + value)); // [object Object] string
过程分析:
1. String({}) 首先调用 toString(): {}.toString() 结果为 "[object Object]" , 是原始值类型
2. 所以 String({}) = String("[object Object]") -
对于
Array
类型: 数组首先按顺序调用@@toPrimitive]()
(将string
作为hint
)、toString()
和valueOf()
方法将其转换为原始值。然后将生成的原始值转换为字符串。const value = [];
console.log(String(value), typeof String(value)); // "" string
console.log(`${value}`, typeof `${value}`); // "" string
console.log("" + value, typeof ("" + value)); // "" string
过程分析:
1. String([]) 首先调用 toString(): [].toString() 结果为 "" , 是原始值类型
2. 所以 String([]) = String("")
const value = [1,2];
console.log(String(value), typeof String(value)); // 1,2 string
console.log(`${value}`, typeof `${value}`); // 1,2 string
console.log("" + value, typeof ("" + value)); // 1,2 string
过程分析:
1. String([1,2]) 首先调用 toString(): [1,2].toString() 结果为 "1,2" , 是原始值类型
2. 所以 String([1,2]) = String("1,2") -
对于
Function
类型: 函数首先按顺序调用@@toPrimitive]()
(将string
作为hint
)、toString()
和valueOf()
方法将其转换为原始值。然后将生成的原始值转换为字符串。const value = function(){};
console.log(String(value), typeof String(value)); // function(){} string
console.log(`${value}`, typeof `${value}`); // function(){} string
console.log("" + value, typeof ("" + value)); // function(){} string
new String()
new String(value)
创建一个 String
类型的包装对象
语法
const string = new String("32")
console.log(string);
返回值
返回一个 String
类型的包装对象, 如下所示:
String {'哈哈'}
0: "哈"
1: "哈"
length: 2
[[Prototype]]: String
[[PrimitiveValue]]: "哈哈"