String函数有3个方法,分别是:
1、String.fromCharCode():通过一串Unicode编码创建字符串。
2、String.fromCodePoint():通过一串码点创建字符串。
3、String.raw():通过模板字符串创建字符串。
String.fromCharCode()
该方法返回一个由一组Unicode值序列组成字符串。
var str = String.fromCharCode(65,66,67);
str; // ABC
该方法无法识别大于0xFFFF的码点,即无法识别32位的UTF-16字符。比如" "这个字符的Unicode编码是0x20BB7。
var str = String.fromCharCode(0x20BB7);
str; // "ஷ"
String.fromCodePoint()
String.fromCodePoint()方法用来弥补String.fromCharCode()无法识别32位UTF-16字符的不足。
var str = String.fromCharCode(0x20BB7);
str; // " "
String.raw()
String.raw()方法是一个模板字符串的处理函数,用来获取一个模板字符串的原始字面值。类似于Python的字符串前缀“r”和C#的字符串前缀“@”。
// 对于模板字符串
var t = `Hi\\n5!`;
// 可以通过String.raw方法来构建
var r = String.raw`Hi\n5!`;
r === t; // true
对于String.raw方法,通过不需要把它看成一个普通函数,只需要把它放在模板字符串前面就可以了。但接在它后面的模板字符串,不需要对反斜线进行转义。
当String.raw方法用作普通函数调用时,第一个参数应该是一个具有raw属性的对象,其raw属性的值应该是一个数组或类数组对象。
var a = String.raw({ raw: "test" }, 0, 1, 2 );
a; // "t0e1s2t;
// 等同于
var b = String.raw({ raw: ['t', 'e', 's', 't'] }, 0, 1, 2 );
b; // "t0e1s2t;
a === b; // true