//ES5 String.fromCodePoint() 用于从Unicode码点返回对应字符 但不能识别码点大于0xFFFF
//ES6中 可以识别大于0xFFFF的字符
// ES6中 新增加String对象的String.raw()方法
String.raw`Hi\n${2 + 3 }!`//该方法返回一个斜杠都被转义的字符串
//'Hi\\n5
// 若原字符串的斜杠已经转义 String.raw()会进行再次转义
String.raw`Hi\\n`
//返回'Hi\\\\n




// String.raw()也可做为函数使用 第一个参数应该是一个具有raw属性的对象 且raw属性的值应该是一个数组
String.raw({raw:'test'},0,1,2)
//'t0e1s2t'



// String.raw()代码实现如下
String.raw = function(strings,...values){
let output = ''
let index ;
for(index = 0;index<values.length;index++){
    output+=strings.raw[index] + values[index];
}
output +=strings.raw[index]
return output;
}
// unicode的正规化:ES6提供的normalize()方法 将字符的不同表示方法统一为同样的形式
        // normalize有四个可选参数:
        // 1.NFC:默认参数 表示标准等价(视觉和语义上的等价)合成 返回多个字符的合成字符 
        //  2.NFD:表示标准等价分解 即在标准等价的前提下 返回合成字符分解的多个字符
        // 3.NFKC:表示兼容等价(语义等价 视觉不等价)合成 返回合成字符
        // 4.NFKD:表示兼容等价分解 即在兼容等价前提下 返回合成字符分解的多个简单字符
        // 但normalize方法不能识别中文 且不能识别三个或三个以上字符的合成

        //传统indexof()    ES6新增方法  确定一个字符串是否包含在另一个字符串之中
        // includes()返回布尔值 是否找到了参数字符串
        // startsWith()返回布尔值 表示参数字符串是否在源字符串头部
        // endsWith()返回布尔值 参数字符串是否在原字符串尾部 
        let s = 'hello javascript!';
        s.startsWith('hello') //true
        s.endsWith('!') //true
        s.includes('o') //true

        // 上述三种方法 均有第二参数 表示开始搜索位置
        s.startsWith('javascript', 6) //true
        s.includes('hello', 6) //false
        s.endsWith('hello', 5) //true




        // 实例方法 repeat()
        // 返回一个新字符串 表示将原字符串重复n次 参数若是小数 被向下取整
        //参数NaN等同于0 
        // 参数若是字符串 则会转换为数字
        'na'.repeat('na') //输出空字符



        // 实例方法7 字符串长度补全功能 padStart()用于头部补全 padEnd()用于尾部补全
        'x'.padStart(5, 'ab') //'ababx'
        'x'.padStart(4, 'ab') //'abax'

        'x'.padEnd(5, 'ab') //'xabab'

        //    如果原字符串长度刚好等于或大于补全长度参数 则字符串补全不生效 返回原字符串
        // 实例方法8 trimStart()消除字符串头部空格 trimEnd()消除字符串尾部空格
        // 上述两种方法不仅对字符串头部或尾部空格键有效 且对tab键 换行符等不可见的空白字符也有效





        //  实例方法9 matchAll()
        //  返回一个正则表达式在当前字符串的所有匹配

 


 

posted on 2019-07-22 21:16  毛不易的小老婆  阅读(746)  评论(0编辑  收藏  举报