ES6系列_15之class类的使用

JS语言的传统方法是经过构造函数,定义并生成新对象,是一种基于原型的面向对象系统。在ES6中新增长了类的概念,能够使用 class 关键字声明一个类,以后以这个类来实例化对象。
1.先来看看es5与es6的写法:
(1)构造函数示例:
const Animal = function (name, age) {
    this.name= name;
    this.age = age;
    return this;
};

Animal.prototype = {
    constructor: Animal,
    print: function () {
        console.log(this.name+ ' ' + this.age);
    }
};


const panda= new Animal('熊猫', '3').print();

 (2)使用ES6提供的class改写为:es6

class Animal {
    constructor(name,age){
        this.name=name;
        this.age=age;
        return this;
    }

    print(){
        console.log(this.name+''+this.age);
    }
}

const panda=new Animal('熊猫', '3');
panda.print()

2.如今来看看es6的类如何使用?函数

(1)类的声明this

先声明一个最简单的Animal类,类里只有一个print方法,方法中打印出传递的参数。es5

class Animal{
    print(val){
        console.log(val);
    }
}

(2)类的使用spa

咱们已经声明了一个类,并在类里声明了print方法,如今要实例化类,并使用类中的方法。prototype

class Animal{
    print(val){
        console.log(val);
    }
}
let p= new Animal();
p.print('熊猫');

输出结果为:熊猫。3d

    (2.1)类的多方法声明code

咱们在上述基础上在声明一个eat方法。对象

class Animal{
    print(val){
        console.log(val);
    }
    eat(val){
        console.log(this.print("熊猫"),"eat===>",val)
    }
}
let panda= new Animal();

panda.eat("竹子")

此时咱们会发现输出的结果为:blog

也就是this.print("熊猫") 这句代码出现了undefined。这是为啥呢?

这是因为类中的print方法没有返回值形成的,咱们给print方法返回值,代码以下:

class Animal{
    print(val){
        console.log(val);
        return val;
    }
    eat(val){
        console.log(this.print("熊猫"),"eat===>",val)
    }
}
let panda= new Animal();

panda.eat("竹子")

此时的结果为:

这里须要注意的是两个方法中间不要写逗号了,还有这里的this指类自己,还有 使用return返回值。

(3) 类的传参

在类的参数传递中咱们用constructor( )进行传参。传递参数后能够直接使用this.xxx进行调用。

 例如一开始时咱们改写的代码同样,如今再把该代码贴出以下:

class Animal {
    constructor(name,age){
        this.name=name;
        this.age=age;
        return this;
    }

    print(){
        console.log(this.name+''+this.age);
    }
}

const panda=new Animal('熊猫', '3');
panda.print()

使用constructor来约定了传递参数,而后在print方法中打印。

(4)class的继承

类的一大特色就是继承。ES6中也有继承,使用关键子extends

例如,如今有一个动物,除了基本的姓名与年龄外,还有独特的爱好--唱歌,咱们该怎么处理呢,这里用到了类的继承,代码以下:

class Bird extends Animal{
    sing(val){
        console.log("唱",val)
    }
}

let bird=new Bird("鹦鹉",3)
bird.sing("国歌")

输出结果为:

未完,待续。。。。

相关文章
相关标签/搜索