携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天点击查看活动详情。
对象方法扩展
- Object.is() 判断两个值是否完全相等 NaN 和 NaN值相等
- Object.assign() 对象的合并 复制一个或多个对象来创建一个新的对象。后面对象的属性会覆盖前面对象的属性
- Object.setPrototypeOf() 设置原型对象
- Object.getPrototypeOf() 获取原型对象
模块化
模块化:将一个大的程序文件,拆分成许多小文件,然后将小文件组合起
优点: 防止命名冲突、代码复用、高维护性
ES6 之前的模块化规范产品
- CommonJS =》 NodeJS、Browserify
- AMD =》 requireJS
- CMD =》 seaJS
ES6模块化语法: 模块功能主要由两个命令构成:export 和 import
export 命令用于规定模块的对外接口import命令用于输入其他模块提供的功能
Babel
- 安装工具 babel-cli、babel-preset-env、browserify (webpack)
- babel js -d dist/js (未全局安装需加上 npx)
- 打包: npx browserify dist/js/2-app.js -o dist/bund.js
ES7
Array.prototype.includes() includes() 函数用来判断一个数组是否包含一个指定的值
// includes indexOf() 返回值是一个下标,返回值为 -1 时不包含
const mingzhu = ['西游记', '红楼梦', '三国演绎', '水浒传'];
// 判断
console.log(mingzhu.includes('西游记')) // true
console.log(mingzhu.includes('封神演义')) // false
指数运算
// ** 等效与 Math.pow
console.log(2 ** 10) //1024
console.log(Math.pow(2, 10)) //1024
async 和 await
-
async 和 await 两种语法结合,可以让异步代码像同步代码一样 异步操作代码
-
async 表示函数里吗有异步操作,await 表示紧跟在后面的表达式需要等待结果 async 函数 默认返回一个 Promise对象。Promise 对象的结果由 asyncv 函数执行的返回值决定
声明:在函数前加
async
async function fn() {
// 返回一个字符串
// return 'sgg'
// 返回的结果不是一个Promise 类型的对象的时候,函数返回就是成功 Promise 对象
// return
// 抛出错误,返回的结果是一个失败的Promise
// throw new Error('出错了!')
// 返回结果如果是一个 Promise 对象
return new Promise((resolve, reject) => {
resolve('成功的数据')
// reject('失败的错误')
})
// 空的自动返回一个 fulfilled 状态的Promise,Promise返回值为 undefined
}
const result = fn()
// console.log(result)
// 调用 then 方法
result.then(value => {
console.log(value)
}, reason => {
console.log(reason)
})
await:意思是 async wait (异步等待)
await 表达式 必须写在async函数中。await 右侧的表达式一般为 Promise 对象。 await返回值是Promise成功的值。 await 的Promise失败了,就会抛出异常,需要通过try … catch捕获处理
// 创建一个 promise 对象
const p = new Promise((resolve, reject) => {
// resolve('ceggb')
reject("失败了")
})
// await 要放在 async 函数中
async function main() {
try {
let result = await p
console.log(result)
} catch (e) {
// try...catch 捕获失败
console.log(e)
}
}
main.call()