vue

关于class与prototype

2019-05-09  本文已影响0人  夕禾口

es6 中的class,与js中的prototype 有什么关系

ES6 为了进一步缩减代码的简写,和简化代码的逻辑,引入了关键词class。但class的实现也是在prototype基础上的,做了一层语法糖,它的大部分功能,ES5 也能做到,新的class写法只是让对象原型的写法更加清晰,更像面向对象的编程语法,关于class,如果学过c++或者Java的人来说,比较容易理解。

class Person{
    constructor((name){
        this.name = name|| '';
    }
    toString(){
        return this.name;
    }
}

var pi = new Person();

console.log(p1.name);

class Boy extendPerson(){
        constructor(name){
            super(name);
            this.gende = 'boy';
        }
        toString(){
            return super.toString()+","+this.gende;
        }
    }

var b1 = new Boy('hello');

console.log(b1);
console.log(b1.toString());

ES5的继承,也就是prototype的实质是先创造子类的实例对象this,然后将父类的方法添加到this上。
ES6 的继承,也就是class,实现创造父类的实例对象this,然后在用子类的构造函数修改this,它们的实现机制是不同的,ES5和ES6 一样,类的所有实例共享一个原形对象。

上一篇下一篇

猜你喜欢

热点阅读