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 是静态执行,所以不能使用表达式和变量。

  • export default 命令
    在一个文件或模块中,export、import 可以有多个,export default 仅有一个。
    export default 中的 default 是对应的导出接口变量。
    通过 export 方式导出,在导入时要加{ },export default 则不需要。
    export default 向外暴露的成员,可以使用任意变量来接收。

你可能感兴趣的:(知识总结,es6)