美文网首页vue
关于class与prototype

关于class与prototype

作者: 夕禾口 | 来源:发表于2019-05-09 19: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 一样,类的所有实例共享一个原形对象。

    相关文章

      网友评论

        本文标题:关于class与prototype

        本文链接:https://www.haomeiwen.com/subject/rapgoqtx.html