1.const 和 let
2.解构赋值
const oldName = {id:'111',name:'zhangsan'}
const {name:newName} = oldName;
console.log('oldName',newName) // oldName zhangsan
//对象类型
let { foo } = {foo:1, bar:2} //foo = 1
//重新命名
let {foo : newfoo } = {foo:1,bar:2} //newfoo = 1
3.模板字符串
4.数组的扩展
-
call apply bind 的区别:
fn.apply(null,[1,2,3]) fn.call(null,1,2,3) fn.bind(null,1,2,3)()
-
数组实例的方法
//find() 返回第一个符合数组条件的元素 //findIndx() 返回第一个符合数组条件的元素索引值 //Object.entries() //对象 const obj = {foo:'aa',bar:'bb'} console.log(Object.entries(obj)) //[['foo','aa'],['bar','bb']] //数组 const arr = [1,2,3] console.log(Object.entries(arr)) //[['0','1'],['1','2'],['2','3'] //字符串 const str = 'abc' console.log(Object,entries(str)) //[['0','a'],['1','b'],['2','c'] //Object.keys() 返回属性名 var obj = {a:1,b:"zhangsan"} console.log(Object.keys(obj)) // ["a","b"] //Object.values()返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 var obj = {0:'a',1:'b',2:'c'} console.log(Object.values(obj)) // ['a','b','c'] var obj1 = {100:'a',2:'b',7:'c'} console.log(Object.values(obj1)) //['b','a','c']
5.Symbol
javascript 新增的一种数据类(String,Array,Boolean,Number,undefined,Null,Object)
symbol作为对象的属性名时不会被for…in,for…of,Object.keys()识别
6.Promise
const p = new Promise((resolve,reject) => {
setTimeout(()=>{
resolve()
},1000)
}).then(res=>{})
.catch(err => {})
then方法包含两个参数,一个是成功的回调,另一个是失败的回调
.then(res => {},err => {})
最好用catch方法,catch方法会捕获then里面的错误,then有错误则不会终止
7.Set&&Map
//数组去重
[...new Set([1,1,1,2,3,4,3])]
Array.from(new Set([1,1,1,2,3,4,3]))
const m = new Map()
m.set('1', 'ab')
m.get("1") // 'ab'
m.delete("1")