05 2021 档案
摘要:基本使用 function后面加个*号 function* foo() { for (let i = 0; i < 3; i++) { yield i; // yield不能作为构造函数去使用,只能在generator函数里面直接使用 } } // generator函数需要手动执行 let f =
阅读全文
摘要:Promise是ES6异步编程解决方案之一,简化以前ajax的嵌套地狱,增加代码可读性。 基本用法: resolve,成功 reject,失败 let p = new Promise((resolve, reject) => { // Promise里面的非异步代码是立刻执行 console.log
阅读全文
摘要:Reflect 映射 将Object属于语言内部的方法放到Reflect上 修改某些Object方法的返回结果,让其变得更合理 让Object操作编程函数行为 Reflect对象的方法与Proxy对象的方法一一对应 Object的一些方法抽离到Reflect,减小Object体量,增加代码可读性:
阅读全文
摘要:Proxy代理 常用拦截方法 ES5拦截: let obj = {} let newVal = '' Object.defineProperty(obj, 'name', { get() { console.log('get'); return newVal }, set(val) { consol
阅读全文
摘要:二进制 0B 八进制 0O Number.isFinite() , Number.isNaN() Number.parseInt() , Number.parseFloat() Number.isInteger() 0.1+0.2 0.3 ??? Math新增方法 十进制 -> 二进制,ES5的做法
阅读全文
摘要:y修饰符 u修饰符 复习以前的修饰符: i(忽略大小写) m(多行匹配) g(全局匹配) y修饰符:粘连修饰符 const str = 'aaa_aa_a' const reg1 = /a+/g // g修饰符每次匹配剩余字符 const reg2 = /a+/y // y修饰符每次剩余的第一个开始
阅读全文
摘要:字符的Unicode表示法 字符串的遍历器接口 ****重点****模板字符串 String.fromCodePoint() String.prototype.includes() String.prototype.startsWith() String.prototype.endsWith() S
阅读全文
摘要:Map:一种新的数据结构 常用方法 遍历 应用场景 WeakMap 常用方法: let map = new Map() let obj = { name: '张三' } map.set(obj, 'zhangsan') console.log(map); console.log(map.get(ob
阅读全文
摘要:Set:一种新的数据结构 常用方法 遍历 应用场景 WeakSet 常用方法: // Set的成员值一定是唯一的不重复的 let s = new Set([1, 2, 3, 2]) // 添加数据add s.add('a') // add可以链式操作 s.add('b').add('c') // 删
阅读全文
摘要:Symbol:一种新的原始数据类型 声明方式: let s1 = Symbol() let s2 = Symbol() console.log(s1); // Symbol() console.log(s2); // Symbol() console.log(s1 s2); // false let
阅读全文
摘要:ES5 中的类与继承: 类的定义: function People(name, age) { // this指向当前实例化对象 console.log(this); // 实例属性 this.name = name this.age = age // 每一次new实例的时候累计到People.cou
阅读全文
摘要:如何理解面向过程与面向对象: 有个脑经急转弯是这样的:如何把一个大象放进冰箱? 面向过程: 1、打开冰箱门 2、把大象装进去 3、关上冰箱门 面向对象: 1、大象 2、冰箱 3、隐藏对象:手 如何理解类与对象: 类:人 对象:你 人的类有各种基本的属性和方法,比如有四肢,头发的属性,能走路的方法。
阅读全文
摘要:Object.assign,只是进行了浅拷贝,并没有进行深拷贝。 而且会在复杂结构当中会丢失属性,如下代码: let target = { a: { b: { c: 3 }, e: 4, f: 5, g: 6 } } let source = { a: { b: { c: 1 }, e: 2, f:
阅读全文
摘要:属性简洁表示法 属性名表达式 Objec.is() 扩展运算符 与 Object.assign() in 对象的遍历方式 属性简洁表示法: 如果属性key跟变量名一样,可简写 let name = '张三' let age = 18 let people = { name, age } consol
阅读全文
摘要:1、this指向定义时所在的对象,而不是调用时所在的对象 2、不可以当做构造函数 3、不可以使用arguments对象 ES5中定义函数的两种方式: function fn1() { console.log('fn1'); } let fn2 = function () { console.log(
阅读全文
摘要:1、符号都是使用:... 2、扩展运算符:把数组或者类数组展开成用逗号隔开的值 3、rest参数:把逗号隔开的值组合成一个数组 扩展运算符: function foo(a, b, c) { console.log(a, b, c); } let arr = [1, 2, 3] foo(...arr)
阅读全文
摘要:参数的默认值 与解构赋值结合 length属性 作用域 函数的name属性 ES5设置函数参数默认值: function foo(x, y) { y = y || 'world'; console.log(x, y); } foo('hello', 'girl'); foo('hello', 0);
阅读全文
摘要:类数组 / 伪数组 Array.from() Array.of() copyWithin() fill() includes() 类数组、伪数组例子: let divs = document.getElementsByTagName('div'); console.log(divs); // HTM
阅读全文
摘要:解构赋值:按照一定模式,从数组和对象中提取值,对变量进行赋值。 数组解构 对象解构 字符串解构 应用场景 曾经的赋值噩梦,非解构赋值数组: let arr = [1, 2, 3]; let a = arr[0]; let b = arr[1]; let c = arr[2]; console.log
阅读全文
摘要:ES5中数组遍历方式: for循环 forEach():没有返回值,只是针对每个元素调用func map():返回新的Array,每个元素为调用func的结果 filter():返回符合func条件的元素数组 some():返回boolean,判断是否有元素、是否符合func条件 every():返
阅读全文
摘要:新声明方式:const 1、不属于顶层对象 window 2、不允许重复声明 3、不存在变量提升 4、暂时性死区 5、块级作用域 以上特性跟let声明一样,特性可看 let 的学习笔记:链接跳转 ES5里面定义常量: Object.defineProperty(window, "PI", { val
阅读全文
摘要:新声明方式:let 1、不属于顶层对象 window 2、不允许重复声明 3、不存在变量提升 4、暂时性死区 5、块级作用域 原来var声明: var a = 5; console.log(a); // 5 console.log(window.a); // 5 delete a console.l
阅读全文