![](https://img-blog.csdnimg.cn/2020040512091449.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
ES6入门
阮一峰的《ES6入门教程》的读书笔记
哈哩噜啾啾哈呀呀
这个作者很懒,什么都没留下…
展开
-
14.Proxy
概述Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。Proxy 实际上重载(overload)了点运算符,即用自己的定义覆盖了语言的原始定义。var proxy =原创 2020-07-30 20:05:56 · 156 阅读 · 0 评论 -
13.Set 和 Map 数据结构
SetSet本身是一个构造函数,用来生成 Set 数据结构。通过add()方法向 Set 结构加入成员Set 结构不会添加重复的值。const s = new Set();[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));for (let i of s) { console.log(i);}// 2 3 5 4Set函数...原创 2020-04-08 21:37:27 · 123 阅读 · 0 评论 -
12.Symbol
ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。目的是为了解决对象属性名冲突的问题Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,...原创 2020-04-06 21:40:51 · 130 阅读 · 0 评论 -
11.对象的新增方法
Object.is() 是否相等用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。不同之处只有两个:一是+0不等于-0,二是NaN等于自身。+0 === -0 //trueNaN === NaN // falseObject.is(+0, -0) // falseObject.is(NaN, NaN) // true如果想通过ES5实现,只需要将以上两...原创 2020-04-05 21:39:07 · 184 阅读 · 0 评论 -
10 对象的扩展
属性的简洁表示法ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。属性名就是变量名, 属性值就是变量值。const foo = 'bar';const baz = {foo};baz // {foo: "bar"}// 等同于const baz = {foo: foo};function f(x, y) { return {x, y};}f(1, ...原创 2020-04-05 11:43:57 · 123 阅读 · 0 评论 -
9 数组的扩展
扩展运算符扩展运算符当作形参的时候,是可以将多个参数组合成一个数组传入,只能当作形参的最后一项function fn(a,...nums){ return nums.unshift(a)}扩展运算符当作实参时,可以将一个数组拆解成多个参数的形式传入函数执行,可以放在任意位置function add(a,b,c,d,e) { return a + b + c + d +...原创 2020-04-05 11:41:54 · 89 阅读 · 0 评论 -
8 函数的扩展
函数参数的默认值参数变量是默认声明的,所以不能用let或const再次声明。使用参数默认值时,函数不能有同名参数。function foo(x = 5) { let x = 1; // error const x = 2; // error}// 不报错function foo(x, x, y) { // ...}// 报错function foo(x, x,...原创 2020-04-05 11:40:01 · 85 阅读 · 0 评论 -
7 数值的扩展
Number.isFinite(), Number.isNaN()-它们与传统的全局方法isFinite()和isNaN()的区别在于,传统方法先调用Number()将非数值的值转为数值,再进行判断。这两个新方法只对数值有效,Number.isFinite()对于非数值一律返回false, Number.isNaN()只有对于NaN才返回true,非NaN一律返回false。Number...原创 2020-04-05 11:37:01 · 81 阅读 · 0 评论 -
6 正则的扩展
u 修饰符对正则表达式添加了u修饰符,含义为“Unicode 模式”,用来正确处理大于\uFFFF的 Unicode 字符。也就是说,会正确处理四个字节的 UTF-16 编码。具体用法随用随查正则实例对象新增unicode属性,表示是否设置了u修饰符y 修饰符ES6 还为正则表达式添加了y修饰符,叫做“粘连”(sticky)修饰符。y修饰符的作用与g修饰符类似,也是全局匹配,后一...原创 2020-04-05 11:32:39 · 91 阅读 · 0 评论 -
5 字符串的新增方法
String.raw()原生的 String 对象,提供了一个raw()方法。该方法返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,往往用于模板字符串的处理方法。String.raw`Hi\n${2+3}!`// 实际返回 "Hi\\n5!",显示的是转义后的结果 "Hi\n5!"作用就是给每个\前面加一个\最常见的使用方法就是用于模板字符串raw()函数的参数得是对象,放...原创 2020-04-05 10:14:46 · 214 阅读 · 0 评论 -
4 字符串的扩展
字符的 Unicode 表示法JavaScript 共有 6 种方法可以表示一个字符。'\z' === 'z' // true'\172' === 'z' // true'\x7A' === 'z' // true'\u007A' === 'z' // true'\u{7A}' === 'z' // true字符串可以被for…of循环遍历这个遍历器最大的优点是可以识别大于0...原创 2020-04-05 10:11:47 · 104 阅读 · 0 评论 -
3 变量的解构赋值
数组的解构赋值// 之前赋值let a = 1;let b = 2;let c = 3;// 现在赋值let [a, b, c] = [1, 2, 3];let [x, y, ...z] = ['a'];x // "a"y // undefinedz // []只要等号两边的结构相同,左边的变量就会被赋予对应的值如果解构不成功,变量的值就等于undefined。两边都...原创 2020-04-05 10:07:36 · 166 阅读 · 0 评论 -
2.let 和 const
let 命令块级作用域中的声明for循环中的使用var a = [];for (let i = 0; i < 10; i++) { a[i] = function () { //这一行的i定义函数的时候绑定的,和var,let无关,不影响 console.log(i); //这一行的i是执行的时候才计算的,用var就只能找到10了 };}a[6](); // 6...原创 2020-04-04 22:33:35 · 106 阅读 · 0 评论