ES学习ES7之后的语法及其知识点归纳(第五天)
1. ES7新特性
1.1 Array.prototype.includes:检测数组中包含某个元素
返回值:布尔类型
1.2 指数操作符: **,用来实现幂运算
作用与Math.pow是一样的。
示例代码:
<script>
// includes
const friends = ['小红', '小明', '小张', '小计'];
console.log(friends.includes('小红')); //true
console.log(friends.includes('傻逼')); // false
// **
console.log(2 ** 10); //1024
console.log(Math.pow(2, 10)); //1024
</script>
2. ES8新特性
2.1 async和await
async函数:
- async函数的返回值为promise对象。
- promise对象的结果由async函数执行的返回值决定。
await表达式:
- await关键字必须写在async函数中。
- await右侧的表达式为promise对象
- await的返回值是promise成功的值,resolve
- 如果promise对象返回失败,就会抛出异常,这时需要使用try…catch代码块来作捕获处理
<script>
// 发送AJAX 请求,返回的结果是 Promise 对象
function sendAJAX(url) {
return new Promise((resovle, reject) => {
//1. 创建对象
const x = new XMLHttpRequest();
//2. 初始化
x.open('GET', url);
//3. 发送
x.send();
//4. 事件绑定
x.onreadystatechange = function () {
if(x.readyState === 4) {
if (x.status >= 200 && x.status < 300) {
//成功
resovle(x.response);
}else {
//失败
reject(x.status);
}
}
}
})
}
// 测试
// sendAJAX("https://api.apiopen.top/getJoke").then(value => {
// console.log(value);
// }, reason => {})
// async 与 await 测试
async function main() {
//发送 AJAX 请求
let result = await sendAJAX("https://api.apiopen.top/getJoke");
console.log(result);
}
main();
2.2 Object.values 和 Object.entries
- Object.values(): 返回一个给定对象的所有可枚举属性值的数组。
- Object.entries():返回一个给定对象自身可遍历属性 [key,value] 的数组。
2.3 Object.getOwnPropertyDescriptors
返回指定对象所有自身属性的描述对象
示例:
<script>
const study = {
name: '海军',
school: '二工大',
subject: ['数学', '编程', '算法']
}
// 获取对象所有的键
console.log(Object.keys(study)); //["name", "school", "subject"]
// 获取对象所有的值
console.log(Object.values(study)); //["海军", "二工大", Array(3)]
// entries
console.log(Object.entries(study)); //[Array(2), Array(2), Array(2)]
//创建Map
const m = new Map(Object.entries(study));
console.log(m.get('school')); //二工大
// 对象属性的描述对象
console.log(Object.getOwnPropertyDescriptor(study)); //undefined
</script>