ES6面向对象须知

语法糖

es6 的面向对象是 es5 的语法糖 , 跟之前的逻辑还有实现的效果是一样的 , 只不过写法更方便了 , 可以认为是对原来的原型的写法进行了封装

constructor

constructor函数就相当于是es5里的构造函数 , 用来定义属性

定义类

class Animal{
    constructor(name,age){
        this.name=name;	//属性
        this.age=age;
    }
    
    run(){	//方法
        alert(this.name+"runrunrun");
    }//不加static的方法就相当于是es5里在原型上扩充的方法 被实例化对象调用
    
    static run2(){
        alert(this);//this不再指向实例化对象而是指向整个类Animal
    }//在方法的前面加上static关键字 这个方法就变成了静态方法,被整个类调用,不能被实例化对象调用
}

var dog=new Animal("dog","19");
dog.run();	//dogrunrunrun
Ani/mal.run2();	//整个animal类的代码

继承

es6中添加了专门用来实现继承的关键字 extends 和 super

class Cat extends Animal{
    constructor(name,age,miao){
        super(name,age);	//继承父类animal的属性
        this.miao=miao;		//cat自己的属性
    }
    say(){	//cat自己的方法
        alert(this.name+"喵喵喵");
    }
}
var cat1=new Cat("小花",2,"猫叫");
cat1.say();	//小花喵喵喵(自己的方法)
cat1.run();	//小花runrunrun(继承父类的方法)

以上代码 cat 继承animal , animal是父类也叫做超类

剩余运算符和扩展运算符…

(1) …作为 rest 剩余运算符 , 把剩余的数组成一个数组

// 1.解构赋值的时候 , 把解构源剩余的值解构为一个数组
   let [a,b,...c]=[1,2,3,4];  
   console.log(a,b,c);	//1,2,[3,4]

//2....作为函数的参数
   function fun1(a,...b){
      console.log(a,b);	//1,[2,3] 
   }
   fun1(1,2,3);

(2) …作为扩展运算符 (展开运算符 spread)

// 1.把类数组转化为数组
   var set=new Set([1,2,3,1,2]);
   var res=[...set];//[1,2,3]	(set有唯一性,可以达到去重的效果)

// 2.复制数组(第一层的深复制)
   var arr2=[...res];
   console.log(arr2);	//[1,2,3]

// 3.合并数组
   var arr3=[...res,...arr2];
   console.log(arr3);	//[1, 2, 3, 1, 2, 3]
   console.log(...arr3);	//1 2 3 1 2 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值