知识总结|ES6 set、map、symbol...方法

set

  • new Set([])
  • size 长度
  • add() 添加
  • delete() 删除
  • clear() 清空
  • for of 遍历
  • has() 检测是否含有
  • 特点:不重复
var s = new Set([1, 3, 1, 3, 5, 7, 9]); console.log(s); console.log("size:", s.size); //获取长度 console.log("是否有5", s.has(5)); //是否含有是返回true无返回false //---------------------------------- s.add(12); //添加 console.log(s); s.delete(1); //删除 console.log(s); for (let i of s) { //遍历 console.log(i); }

map 特点:
  • 有序
  • key可以是任意值
  • new Map([[k,v],[]])
  • size 长度
  • set(k,v) 设置
  • get(k) 获取
  • has() 检测是否有
  • clear()
  • for of 遍历
var obj={"b":100,"a":"zeng","2":"best","1":"good"} // console.log(obj); var map=new Map([["b",100],["a","zeng"],["2","best"],["1","good"]]) // console.log(map); // console.log(map.size); //长度 // var map1=map.get('1'); //获取 // console.log(map1); // var map1=map.set("3","amazing"); //设置 // console.log(map1); // var map1=map.delete("2"); //删除 // console.log(map1); for(let [k,v] in map){//遍历 console.log(k,v); } // var arr=Object.keys(obj).length; // console.log(arr);

symbol
  • 创建 var s1=Symbol(“blue”)
  • 符号是唯一的
  • 常用于对象的键
    obj={[s1]:"mumu"} obj[s1]

var obj={[s1]:"mumu"} Symbol.for("blue")==Symbol.for("blue")//symbol.for返回True Symbol("blue")==Symbol("blue")//返回False

  • 迭代器
  • JavaScript 可迭代对象
    String 字符串
    Array 数组
    Set 集合
    Map 键值对
    values() 值集合
    keys() 键的集合
    entries() 键值的集合
var arr=["我爱","我的","祖国"]; //默认遍历是value for(let item of arr){ console.log(item); } //keys 键名的集合 for(let key of arr.keys()){ console.log(key); }// value值的集合 for(let val of arr.values()){ console.log(val); }//tries键与值的集合 for(let [key,val] of arr.entries()){ console.log(key,val); }

apply
执行函数,对象冒充,参数数组

function add(x,y){ console.log(this,x+y) } add.apply({name:"mumu"},[3,7]){name:"mumu"} 10

call
执行函数,对象冒充,参数单个

add.call({name:"mumu"},[3,7]) {name:"mumu"} 10

bind
执行函数,对象冒充,参数默认值

var nadd=add.bind({name:"zql"},5) nadd(10) //输出 {name:"zql"},15

  • 定义
    class Cat{
    constructor(){}
    }
  • 初始化类
    new Cat()
  • 继承
    class Cat extends Animal{}
  • 方法
    brak(){}
  • 属性
    this.name=18
  • 访问控制
    set Age(val){}
    get Age(){}
  • 调用父类构造函数
    super()
  • 静态方法
    static sayLog(){}
    Cat.sayLog()
  • 静态属性
    static num=0
    Cat.num
模块
  1. 每一个模块只加载一次, 每一个JS只执行一次, 如果下次再去加载同目录下同文件,直接从内存中读取。 一个模块就是一个单例,或者说就是一个对象;
  2. 每一个模块内声明的变量都是局部变量, 不会污染全局作用域;
  3. 模块内部的变量或者函数可以通过export导出;
  4. 一个模块可以导入别的模块
  • 下面列出几种import和export的基本语法:
  1. 在lib.js文件中, 使用 export{接口} 导出接口, 大括号中的接口名字为上面定义的变量, import和export是对应的;
  2. 在export接口的时候, 我们可以使用 XX as YY, 把导出的接口名字改了, 比如: closureFn as sayingFn, 把这些接口名字改成不看文档就知道干什么的:
  3. 这种方式是直接在export的地方定义导出的函数,或者变量:
  4. 这种导出的方式不需要知道变量的名字, 相当于是匿名的, 直接把开发的接口给export;如果一个js模块文件就只有一个功能, 那么就可以使用export default导出;
  5. export也能默认导出函数, 在import的时候, 名字随便写, 因为每一个模块的默认接口就一个:
  6. 使用通配符* ,重新导出其他模块的接口 (其实就是转载文章, 然后不注明出处啦);
  • 其他:ES6的import和export提供相当多导入以及导出的语法;在import的时候可以使用通配符*导入外部的模块:
  • 每一个导入的js模块都是活的, 每一次访问该模块的变量或者函数都是最新的, 这个是原生ES6模块 与AMD和CMD的区别之一
  • import 命令的特点
    只读属性:不允许在加载模块的脚本里面,改写接口的引用指向,即可以改写 import 变量类型为对象的属性值,不能改写 import 变量类型为基本类型的值。
    单例模式:多次重复执行同一句 import 语句,那么只会执行一次,而不会执行多次。import 同一模块,声明不同接口引用,会声明对应变量,但只执行一次 import 。
    静态执行特性:import 是静态执行,所以不能使用表达式和变量。
  • 【知识总结|ES6 set、map、symbol...方法】export default 命令
    在一个文件或模块中,export、import 可以有多个,export default 仅有一个。
    export default 中的 default 是对应的导出接口变量。
    通过 export 方式导出,在导入时要加{ },export default 则不需要。
    export default 向外暴露的成员,可以使用任意变量来接收。

    推荐阅读