参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ Set和Map数据结构 1.Set  基本用法    Set是一种新的数据结构,它的成员都是唯一的不重复的.    let s1 = new Set();    s1.add({"name":"123"});    s1 // Set(1){{"name":"123"}} let s2 = new Set([1,2,3,4,…
前言 当我们需要存储一些数据的时候,首先想到的是定义一个变量用来存储,之后我们可能学了数组,发现数组比变量可以存储更多的数据,接着可能有其它的存储数据的方法等等,然而我今天需要介绍的是在ES6中比较常见使用的数据类型结构,Set和Map. Set数据结构 1.Set简介 set中成员的值都是唯一的,没有重复的值 向set中添加成员时,不会发生类型转换 向set中添加的对象总是不想等 2.常用的属性和方法 size:返回set实例的成员总数 add():添加某个值,返回set本身 delete()…
1 基本用法 Map类型是键值对的有序列表,而键和值都可以是任意类型.可以看做Python中的字典(Dictionary)类型. 1.1 创建方法 Map本身是一个构造函数,用来生成Map实例,如: let m1 = new Map() 1.2 初始化 Map构造函数可以接收一个数组作为参数,该数组的成员可以是一组表示键值对的数组.也可以是任何具有 Iterator 接口.且每个成员都是一个双元素的数组的数据结构.如: let map = new Map([ ['name', 'zhang'],…
一:修饰器(Decorator)是一个函数,用来修改类的行为. 1)定义与使用 function 修饰器名(target) { //target是被修饰对象,可用target.xxx进行调用修改 } @修饰器名 class MyClass { // ... } //调用修饰器 MyClass.修饰器; 修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时.这意味着,修饰器能在编译阶段运行代码. 2)带参数的修饰器 function 修饰器名(参数列表) { return function(…
目录 多线程学习笔记九之ThreadLocal 简介 类结构 源码分析 ThreadLocalMap set(T value) get() remove() 为什么ThreadLocalMap的键是WeakReferrence? 总结 多线程学习笔记九之ThreadLocal 简介   ThreadLocal顾名思义理解为线程本地变量,这个变量只在这个线程内,对于其他的线程是隔离的,JDK中对ThreadLocal的介绍: This class provides thread-local var…
ES6学习笔记(2019.7.29) 目录 ES6学习笔记(2019.7.29) let和const let let 基本用法 let 不存在变量提升 暂时性死区 不允许重复声明 块级作用域 级作用域 ES6的块级作用域 块级作用域与函数声明 const 基本用法 本质 顶层对象 解构赋值 数组的解构 基本用法 默认值 对象的解构 基本用法 默认值 注意点 字符串的解构 数值布尔值的解构 函数参数的解构 圆括号问题 不能使用圆括号的情况 可以使用圆括号的情况 用途 for.for in.for…
变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; var c = 3; ES6允许写成下面这样: 1 var [a, b, c] = [1, 2, 3]; 这种写法属于"模式匹配",只要等号两边的模式相同,左边的变量就会被赋予对应的值,如果解构不成功,变量的值就等于undefined,下面是一些使用嵌套数组进行解构的例子: 1 2 3…
前段时间复习了面向对象这一部分,其中提到在es6之前,Javasript是没有类的概念的,只从es6之后出现了类的概念和继承.于是乎,花时间学习一下class. 简介 JavaScript 语言中,生成实例对象的传统方法是通过构造函数来创建的. function Person (name,age){ this.name = name; this.age = age; } Person.prototype.say=function(){ // 不能使用箭头函数(我差点忘记),因为 箭头函数没有pr…
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小工程,再用一种简单的方法把这些小工程连接在一起. 这有可能导致两个问题: 一方面js代码变得很臃肿,难以维护 另一方面我们常常得很注意每个script标签在html中的位置,因为它们通常有依赖关系,顺序错了可能就会出bug 在es6之前为解决上面提到的问题,我们得利用第三方提供的一些方案,主要有两种…
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; val_2 = val_2 || 20; return console.log(val_1 + val_2); } add(); 而现在可以这么做 function add_1(val_1 = 5,val_2 = 10){ return console.log(val_1 + val_2); }…