JavaScript学习笔记(贰拾叁)

59 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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

  1. 安装工具 babel-cli、babel-preset-env、browserify (webpack)
  2. babel js -d dist/js (未全局安装需加上 npx)
  3. 打包: 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()