es6
文章平均质量分 93
twinkle||cll
More interest,less interests (多一些兴趣爱好的向往,少一些功名利禄的追求)
展开
-
JS语法 ES6、ES7、ES8、ES9、ES10、ES11、ES12新特性
ES6(2015)1. 类(class)class Man { constructor(name) { this.name = '小豪'; } console() { console.log(this.name); }}const man = new Man('小豪');man.console(); // 小豪2. 模块化(ES Module)// 模块 A 导出一个方法export const sub = (a, b) => a + b;// 模块转载 2021-03-02 15:25:59 · 3831 阅读 · 3 评论 -
es6思维导图 核心知识点
原创 2020-12-26 09:16:16 · 265 阅读 · 0 评论 -
es 实现二叉树的前序中序,后序遍历,后序中序还原二叉树,前序中序还原二叉树,二叉树的比较diff
// 二叉树class Node { constructor(value) { this.value = value; this.left = null; this.right = null; } /** * 二叉树的前序遍历 * @returns {null} * @constructor */ DLR() { if (!this) return null;原创 2020-12-05 10:59:55 · 231 阅读 · 0 评论 -
es 实现图的基本算法 图的深度优先搜索 广度优先搜索 普利姆算法
// 图的查找算法class Node { constructor(value) { this.value = value; this.neighbors = []; } /** * 深度优先查询 查询图 * @param target {String | Number} * @returns {boolean} 结果 */ searchByDepth(target = '') {原创 2020-12-05 10:53:00 · 381 阅读 · 0 评论 -
经典对象克隆模型 深度克隆
我们都知道 JSON.parse(JSON.stringfy(obj)) 可以深度克隆一个对象,但是有一个缺陷,不能克隆代理对象/** * 克隆的方法 * @param obj * @returns {*} */function clone(obj) { if (obj instanceof Array) { return cloneArray(obj); } else if (obj instanceof Object) { return .原创 2020-11-24 16:12:16 · 235 阅读 · 0 评论 -
es6 模块化学习总结
===============commonJS================== 在node.js 中,由于有且仅有一个入口文件(启动文件),而开发一个应用肯定会涉及到多个文件的配合, 因此,node.js 对模块的需求比浏览器端要大的多 模块的导出: 什么叫做模块: 模块就是一个JS文件,它实现了一部分的功能,并隐藏自己的内部实现,同时提供一些接口供其他模块使用 模块有两个核心元素: 隐藏和暴露 隐藏的,是自己内部的实现 暴露的,是希望.原创 2020-06-26 09:18:28 · 285 阅读 · 0 评论 -
es6数组学习总结
===================数组新增API===================== 静态方法: Array.of(...args): 使用指定的数组创建一个新数组 例如:const arr = Array.of(1,2,3,4,5,6,7); Array.from(arg): 通过给定的类数组或可迭代对象,创建一个新的数组; 例如: 把类数组转为真数组 实例方法: find(callback): 用于查找满足条件的第.原创 2020-06-24 15:07:23 · 172 阅读 · 0 评论 -
es6 代理(Reflect)和反射(Proxy)的学习总结
=========================反射======================= Reflect: 反射 1. Reflect是什么: Reflect是一个内置的JS对象,它提供了一系列方法,可以让开发者通过调用这些方法,访问JS底层功能 由于它类似于其他语言的反射,因此取名为Reflect 2. 它可以做什么? 使用Reflect可以实现属性的取值,赋值,调用普通函.原创 2020-06-23 19:43:25 · 270 阅读 · 0 评论 -
es6 属性描述符 学习总结
property Descriptor 属性描述符, 用于描述一个属性的相关信息 通过 Object.getOwnPropertyDescriptor(obj, name) 例如: const obj = { 'a': 123, 'b': 234 } const desc = Object.getOwnPropertyDescriptor(a, 'a')原创 2020-06-23 06:59:45 · 279 阅读 · 0 评论 -
weakset和weakmap 学习总结
======================= WeakSet 和 WeakMap====================== let obj = { name: 'twinkle', age: 12 } const s = new Set(); s.add(obj); obj = null; // 当不需要obj时候, set里面的obj内存地址没有变。不会..原创 2020-06-21 21:45:08 · 319 阅读 · 0 评论 -
es6 手动实现 map模拟es6原生map效果
/** * @description: 手动实现一个map */ const MyMap = (() => { const judgeIterator = Symbol("判断是否为可迭代的对象函数"); const judgeExitByKey = Symbol("通过键来判断迭代器里面是否存在对应的键值对"); const isEqual = Symbol("判断两个值是.原创 2020-06-21 21:18:25 · 347 阅读 · 0 评论 -
es6 map 学习总结
=====================map======================== map集合专门用于存储多个键值对数据,键值对(key value pair) 数据集合的特点:键不可重复 在map出现之前,我们使用的是对象的方式来存储键值对,键是属性名,值是属性值。 使用对象存储有以下问题: 1. 键名只能是字符串 2. 获取数据的数量不方便, Object.keys() 来获取 3. 键名容易跟原型上的名称冲突 4.原创 2020-06-21 21:15:58 · 203 阅读 · 0 评论 -
手动实现es6的set集合 模拟set集合实现对应的功能
// 底层实现set, 手写实现set, 为了更加深刻的理解set集合 class MySet { // 此处定义一个数组来模拟set, 原生的set是用c或者c++ 可以操作浏览器底层的设计 _datas = Symbol("内部维护一个数组来模拟set") // 这里用户可以传入参数,也可以不传递参数 constructor(iterator = []) { if (typ.原创 2020-06-21 09:44:27 · 238 阅读 · 0 评论 -
es6的 set 学习总结
================set 集合======================= 一直以来,JS只能使用数组和对象来保持多个数据,缺乏像其他语言那样拥有丰富的结合类型 。因此,ES6 新增了两种结合类型(set 和 map), 用于不同场景发挥作用。 1. set 用于存放不能重复的数据 如何创建一个set: 如 const sets = new Set(); // 创建一个没有任何内容的set集合 .原创 2020-06-21 09:41:06 · 218 阅读 · 0 评论 -
es6 generator 生成器学习总结 使用生成器实现异步请求, async await 的前身
============================生成器========================= 生成器依赖于迭代器,生成器大量使用于react中 什么是生成器: 生成器是通过构造函数Generator创建的对象(只有js引擎可以使用,不提供外部调用) 生成器既是一个迭代器,同时又是一个可迭代对象(说明生成器可以使用for of循环) 如何创建生成器:生成器的创建,必须要使用生成器函数(Generator Function).原创 2020-06-20 22:16:50 · 286 阅读 · 0 评论 -
es6 iterator 迭代器的学习总结
=====================迭代器========================= 背景知识: 1. 什么是迭代? 从一个数据集合中按照一定的顺序,不断取出数据的过程 2. 迭代和遍历的区别? 迭代强调的是依次取数据,并不保证取多少,也不保证把所有的数据取完 遍历强调的是要把整个数据依次全部取出 3. 迭代器 对迭代过程的封装,在不同语言中有不同的表现形式,通常为对象 4. 迭代模式 一种设计模式,用于同.原创 2020-06-20 21:07:49 · 208 阅读 · 0 评论 -
es6手动实现promise 和效果和浏览器底层实现的效果一样
/** * 手动实现promise的功能, 只能保证功能相同。用于来更加深刻的理解promise * 为什么这里要用一个立即执行函数,因为这里没有用模块化,所以用立即执行函数,防止定义的名字相同,导致全局污染 * @type {{new(): MyPromise, prototype: MyPromise}} */const MyPromise = (() => { // 定义一些常量 const PENDING = "pending", // 等待状态(未决状态)原创 2020-06-19 15:14:35 · 270 阅读 · 1 评论 -
es6 异步 之async await 学习总结
async 和 await 是 ES2016/ es7 新增的两个关键字, 它们借鉴了 ES2015 中生成器在实际开发中的应用。 目的是为了简化Promise api 的使用, 并非替代 Promise async:目的是为了简化在函数的返回值中对Promise的创建 例如: async function test() { console.log(1); return 2; // reso.原创 2020-06-19 07:42:28 · 223 阅读 · 0 评论 -
es6 异步处理之 Promise学习总结
=========================事件循环==================先看以下的例子:例1:console.log("a");setTimeout(() => { console.log("b");}, 0)console.log("c");// 以上的结果是 先输出 a, c, b// 然后看下面的例子:console.log("a");setTimeout(() => { console.log("b");}, 0)原创 2020-06-18 13:21:27 · 274 阅读 · 0 评论 -
ES6符号(Symbol)学习总结
==========================普通符号======================= 符号是ES6新增的一个数据类型, 它使用函数 Symbol(符号描述) 来创建 // 创建要给符号 const syb1 = Symbol(); const syb2 = Symbol("abc"); console.log(syb1, syb1) // Symbol() Symbol(abc) 设置符号的初衷,是为了给原创 2020-06-16 12:27:12 · 567 阅读 · 1 评论 -
es6 对象学习 总结
====================es6对象 新增的对象字面量语法========================== 1. 成员速写: 如果对象字面量初始化时,成员的名称来自于一个变量, 并且和变量的名称相同,则可以进行简写 es6以前使用返回对象,需要以下的写法: /** * @description: 创建要给用户, 返回一个对象 * @param : loginId 登录的id * .原创 2020-06-13 21:57:36 · 259 阅读 · 0 评论 -
es6 函数 学习总结
==========================函数参数默认值======================= es6使用参数的默认值, 在书写的时候,直接给形参赋值,赋的值就是默认值 例如: function add( a = 1, b = 2 , c){ retrun a + b + c; } add(undefined,undefined, 2 ) // 5 .原创 2020-06-08 22:36:14 · 232 阅读 · 0 评论 -
es6 字符串与正则表达式 学习总结
<!-- ==================es6 字符串 unicode=============== 文字编码:早期计算机的资源宝贵,内存大小比较小。unnicode使用16位二进制来存储文字, 我们将一个16位二进制叫做一个码元(code unit)。 2^16 后来,由于技术的发展, unicode对文字编码进行了扩展, 将某些文字扩展到了32位(占用2个码元), 并且,将某个对应的二进制数字叫做码点(code point)。 2^32 .原创 2020-06-07 21:13:08 · 353 阅读 · 0 评论 -
es6 let const与var 的区别
==================== 概述:====================== 1. ECMASCript, Javascript, Node.js 它们的区别是什么? ECMASCript: 简称ES, 是一个语言标准(循环, 判断, 变量, 数组等数据类型) JavaScript: 运行在浏览器端的语言, 该语言使用ES标准。 ES + web api = Javascript NodeJs: 运行在服务端语言, 该语言使用ES标准。 E.原创 2020-06-07 11:43:25 · 313 阅读 · 0 评论