@TOC
ES6知识小总结(2)
一、set
set是一个不重复的数组 可以去重
初始化 new Set()
添加 add()
删除delete()
获取长度 size()
遍历 for of
clear() 清空
转换维数组 Array.from()[…]
has() 检测是否有
特点:不重复
var arr=[1,1,1,5,5,2,3,4,5,2,1,2];
var s1=new Set(arr);
arr=Array.from(s1)
console.log(arr)
var s=new Set([1,1,2,2,3,3,4,4,5,5]);
console.log(s);
console.log("size:",s.size);
console.log("是否有",s.has(6));
//-------------------------
s.add(12)
console.log(s)
s.delete(1)
console.log(s)
for(let i of s){
console.log(i)
}
二、map
map
类似于对象
键名可以是任意对象 ,对象:键名只能是 字符串 或者 symbol符号
有序
key可以是任意值
new Map([k,v],[])
获取长度 size()
set(k,v) 设置
get (k) 获取
has() 检测是否有
clear()
for of 遍历
var obj={"b":100,"a":"zxm","2":"dfskfm"};
console.log(obj)
var map=new Map(["b",100]["a","zxm"][2,"dfskfm"]);
console.log(map)
三、symbol
创建 var s1=Symbol(“blue”)
符号是唯一
常用于 对象的键
obj={[s1]:“mumu”}
obj[s1]
四、迭代器
javascript 可选迭代器
string 字符串
Array 数组
Set 集合
Map 键值对
keys 键名的集合
value值的集合
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)
}
//entries 键与值的集合
for(let [key,val] of arr.entries()){
console.log(key,val)
}
五、call
执行函数,对象冒充,参数单个
add.apply({name:“mumu”},3,7)
{name:“mumu”} 10
六、apply
apply
执行函数,对象冒充,参数数组
function add(x,y){
console.log(this,x+y)
}
add.apply({name:“mumu”},[3,7])
{name:“mumu”} 10
七、bind
bind
创建函数,对象冒充,参数默认值
var nadd=add.bind({name:“zqi”},5)
nadd(10)
{name:“zqi”},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
class Animal{
constructor(name) {
this.name=name;
}
runing(){
console.log("会走会跑");
}
}
class Dog extends Animal{
constructor(name) {
super(name);//调用父类的构造函数
//this类的实例
}
//构造函数(new 类被调用)
bark(){
console.log("汪汪汪")
}
}
var d1=new Dog("来福");
var d2=new Dog("旺财");
//猫类
class Cat extends Animal{
constructor(name,age=2) {
super(name);
this.age=age
//每次构造函数被调用 num加1
Cat.num++;
Cat.sayLog()
}
static num = 0
static sayLog(){
console.log(`当前总共有${Cat.num}只猫`);
}
//静态属性 值为 0
bark(){
console.log("喵喵喵")
}
set Age(val){
if(val>0){
this.age=val;
}else{
console.log("设置年龄不正常")
}
}
get Age(){
console.log("被GET到了")
return this.age;
}
}
var c1=new Cat("小白")
var c2=new Cat("小埋",4)
//set get 当我们去设置或者获取的对数据进行额外的操作,隐藏原本的数据直接操作
九、模块
在 ES6 前, 实现模块化使用的是 RequireJS 或者 seaJS
ES6 引入了模块化,其设计思想是在编译时就能确定模块的依赖关系,以及输入和输出的变量。
ES6 的模块化分为导出(export) @与导入(import)两个模块。
模块导入导出各种类型的变量,如字符串,数值,函数,类。
导出的函数声明与类声明必须要有名称。
不仅能导出声明还能导出引用。
export 命令可以出现在模块的任何位置,但必需处于模块顶层。
import 命令会提升到整个模块的头部,首先执行。