JavaScript学习笔记(拾捌)

71 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情

Symbol

Symbol: ES6引入了新的原始数据类型 Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,类似于 字符串。

  1. Symbol 值是唯一的,用来解决命名冲突的问题 2、Symbol 值不能与其他数据进行运算 3、Symbol 定义的对象不能使用 for……in 循环遍历,但是可以使用 Reflect.ownKeys 来获取对象所有的键名
  2. Symbol.for(key) :根据给定的键 key,从运行时的 Symbol 注册表中找到对应的 symbol;找到了则返回它,否则新建一个与该键关联的 symbol,并放入全局 symbol 注册表中

ES6 提供了symbol内置属性值

  • Symbol.hasInstance:当其他对象使用了 instanceof 运算符,判断是否为该对象的实例时,会调用这个方法
  • 迭代symbols symbol. iterator,返回一个对象默认迭代器的方法
  • 正则表达式 symbol.math
  • 替换字符串 symbol.replace

迭代器(Iterator) : 迭代器是一个对象,定义一个序列,并在终止时可能返回一个值。 一种接口,为各种不同的数据结构提供统一的访问机制。
ES6 创建了新的遍历命令

  • for…of 循环,Iterator 接口主要供 for…of 消费使用,for…of 遍历数组,遍历键值
  • for…in 以任意顺序迭代对象的可枚举属性;for…of 遍历可迭代对象定义要迭代的数据

生成器 其实就是一个特殊的函数,用于异步编程。生成器函数使用 function * 语法编写,最初调用生成器不不执行任何代码,而是返回 Generator 迭代器,通过调用生成器的下一个方法消耗值时, Generator函数执行,直到遇到 yield 关键字

util.promisify 方法

传入一个遵循常见的错误优先的回调函数,并返回一个返回 Promise 的版本

// 引入 util 模块
const util = require('util')
// 引入 fs 模块
const fs = require('fs')
// 返回一个新的函数
let mineReadFile = util.promisify(fs.readFile);

mineReadFile('./resouce/content.md').then(value => {
    console.log(value.toString())
})