es6新增扩展
一 字符串扩展
let str='wyyw';
- srt.startsWith('w') true 以w开头
- srt.endsWith('w') true 以w结尾
- str.includes('e') false e是否存在 == indexOf
- str.repeat(2) wyywwyyw 重复次数
- str.padStart(5,'2') 2wyyw 在开头补齐长度5
- str.padEnd(5,'2') wyyw2 在结尾补齐长度5
- 模板字符串 ``
- 内容可换行
- 可用${变量}
- str.trimStart() 消除字符串头部的空格
- str.trimEnd() 消除字符串尾部的空格
新增的symbol 基本数据类型(暂时用不到)
特点:1自己不认识自己,与自己不相等
2无法被重建
3不能进行计算
1创建
const s1 = Symbol('debug'); const s2 = Symbol('xxyy');
const str = 'debug';
console.log(s1 === str); // false
console.log(s1 === s2); // false
2充当对象的私有属性
const obj = {}; const sym = Symbol(); obj[sym] = 'foo'; obj.bar = 'bar'; console.log(obj); // { bar: 'bar' } console.log(sym in obj); // true console.log(obj[sym]); // foo console.log(Object.keys(obj)); // ['bar']
二 数组扩展
-
数组copy
例子:const a=[1,2,3]
const b=[...a]
b=[1,2,3]
2 数组拼接合并
例子:const a=[1,2,3]
const b=[1,2,3]
const c=[...a,...b]
c=[1,2,3,4,5,6]
3数组打印
console.log(...c)//1,2,3,4,5,6
4将伪数组变成真数组
1)将用js获取到得dom类数组转化成真正得数组
1)Array.from()
5遍历
let a=['a', 'b']
for (let index of a.keys()) {
console.log(index);//0 1
}
for (let elem of a.values()) {
console.log(elem);//'a','b'
}
for (let [index, elem] of a.entries()) {
console.log(index, elem);// 0,'a' 1,'b'
}
三函数扩展
function getData(a,b,...c)
- 参数不确定 show(a,b,..c)
- ...c=剩余所有的参数
- ...c 必须放在最后一位
四 数值扩展
- Math
- Math.trunc(4.1) 4 直接去掉小数部分(
- 可接受数字字符串,内部会自动转化为number)
- Math.sign(x) x>0 =>1 x<0 => -1 x=0 => 0 判断x是正负数和0
- Number
- Number.isNaN(NaN) true
- Number.parseInt('3.4') 3.4 可接受数字字符串,内部会自动转化为number)
- Number.parseFloat('3.43') 3.43 可接受数字字符串,内部会自动转化为number)
- Number.isInteger(23.23) false 是否是整数
- Number.EPSILON 最小精确单位 用途:浮点计算精度丢失
例子:Math.abs(4.2-4.2)<Number.EPSILON===true 两者相等
五 对象扩展
- 2个对象值是否完全相等
Object.is(obj1,obj2)
2对象合并
const a=Object.assign(obj1,obj2) 有则覆盖 无则合并
3遍历:Object.keys(obj) 注意写法
let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.keys(obj)) {
console.log(key); // 'a', 'b', 'c'
}
for (let value of Object.values(obj)) {
console.log(value); //1,2,3
}
for (let [key ,value]of Object.entries(obj)) {
console.log(key+':',value); // a:1,b:2,c:3
}
六 JSON
- 将字符串转化为JSON JSON.parse()
注意::str = '{"name":"小明","age":18}'; 属性name和age都用双引号引住
2 将JSON转化为 字符串 JSON.stringify()
//判断数组是否包含某对象 let data = [ {name:'echo'}, {name:'听风是风'}, {name:'天子笑'}, ], val = {name:'天子笑'}; JSON.stringify(data).indexOf(JSON.stringify(val)) !== -1;//true //判断两数组/对象是否相等 let a = [1,2,3], b = [1,2,3]; JSON.stringify(a) === JSON.stringify(b);//true
//深拷贝 function deepClone(data) { let _data = JSON.stringify(data), dataClone = JSON.parse(_data); return dataClone; }; //测试 let arr = [1,2,3], _arr = deepClone(arr); arr[0] = 2; console.log(arr,_arr)//[2,2,3] [1,2,3]