1. symbol
let xxx = Symbol();
let obj = {
name: 'zs',
age: 18,
[xxx]: '183cm',
[Symbol('x1')]: '18级'
}
obj[Symbol('x2')] = 'abc'
- 是独一无二的基本数据类型
- 可在Symbol()括号内部添加字符,区别不同的Symbol()
- 在循环中,symbol类型的属性无法拿到
for(key in obj) {
console.log(key)
// console.log(obj[key])
}
2. Set
let tmp = new Set();
Set 可去除数组中的重复项
let s1 = new Set(a1); 类数组
let a1 = [2,1,3,2,4,5,1,4];
console.log(s1); // 2 1 3 4 5
- add()添加数据(不能添加重复数据)
- delete() 删除数据 => boolean
- has() 判断是否含有某个数据 => boolean
- clear() 清空
- .size长度
3. Map
let tmp = new Map();
键值对形式

- set() 设置数据
- get() 获取数据
- has() 判断是否含有某个数据 => boolean
- delete() 删除数据 => boolean
- clear() 清空
- .size长度
4. Promise(异步编程的解决方案)
resolve 成功的回调函 reject 失败的回调函数
p1.then(f1).catch(f2):
let p1 = new Promise(function(resolve, reject) {
console.log('开始发送请求1');
setTimeout(() => {
let tag = true
if(tag) {
let obj = {
name: 'zs',
age: 18
}
resolve(obj)
} else {
reject()
}
}, 1500)
}).then(function(obj) {
console.log(obj)
console.log('请求1成功')
}).catch(function() {
console.log('请求1失败')
})
p1.then(f1,f2):
let p2 = new Promise((resolve, reject) => {
console.log('开始发送请求1')
setTimeout(() => {
let tag = false;
if(tag) {
resolve()
} else {
reject()
}
}, 2000)
}).then(function(){
console.log('请求1成功')
}, function() {
console.log('请求1失败')
})
p1.then(return p2).then().catch()<------(p1.then(return p2) => p2)
let p1 = new Promise((resolve, reject) => {
console.log('开始发送请求1')
setTimeout(() => {
let tag = false
if (tag) {
resolve()
} else {
reject()
}
}, 1000)
}).then(() =>{
console.log('请求1成功')
return new Promise((resolve, reject) => {
console.log('开始发送请求2')
setTimeout(() => {
let tmp = false
if (tmp) {
resolve()
} else {
reject()
}
}, 2000)
})
}, () => { <-----此时若想设置“请求1失败”只能在then中添加第二个函数
console.log('请求1失败')
// return Promise.reject()
return new Promise(()=>{})
}).then(() => {
console.log('请求2成功')
}).catch(() => {
console.log('请求2失败')
})
- Promise.all<--------所有Promise执行完成
Promise.all([p1, p2, p3]).then(() => {
console.log('okokok')
})
- Promise.race([p1,p2,p3])<---------只需有一个执行完成
Promise.race([p1,p2,p3]).then(() => {
console.log('1111')
})