zoukankan      html  css  js  c++  java
  • 浅谈ES5和ES6继承和区别

    最近想在重新学下ES6,所以就把自己学到的,记录下加强下自己的理解

    首先先简单的聊下ES5和ES6中的继承

    1.在es5中的继承:

    function parent(a,b){
        this a = a;
        this b = b;
    }
    function child(c){
        this c = c
    };

      通过子集去继承父级:

    parent.call(child,1,2)

      而去看call的底层方法可知,继承的过程是通过prototype属性

    child.prototype = new parent(1,2);

      又此可知,ES5继承的实质是先创建了子类元素child的的实例对象,然后再把父类元素parent的原型对象中的属性赋值给子类元素child的实例对象里面,从而实现继承

    2.ES6中的继承

      在传统JS中,生成对象是通过创建构造函数,然后定义生成对象

    function parent(a,b){
        this.a = a;
        this.b = b;
    }

      然后通过prototype增加对应所需方法或属性

    parent.prototype.methods = function(){
        return 'this is test methods';
    }
    parent.prototype.attr = 'this is test attr‘;

      而ES6中引入了类的概念,也就是class。通过关键词class去定义对象。
      class是个关键词,语言糖,这样能更清晰的读懂所创建的对象,
      通过属性constructor来接收控制方法传入的参数,如果不写这个属性,默认是没有参数的

    class parent{
        curstructor(a,b){
            this.a = a;
            this.b = b;
        }
    }        

      ES6中的继承是基于class类之间继承的。通过关键词extends实现。
      通过super实例化调用父类

    class parent{
      constructor(a,b){
        this.a = a;
        this.b = b;
      }
      parentMethods(){
        return this.a + this.b
      }
    }
    class child extends parent{
      constructor(a,b,c){
        super(a,b);
        this.c = c;
      }
      childMethods(){
        return this.c + ',' + super.parentMethods()
      }
    }
    const point = new child(1,2,3);
    alert(point.childMethods());

      上面的代码,是一套简单的ES6父子类继承。
      相信已经看出来了,虽明显的区别就是在于ES6中,激活父组件的是super方法,而不是新建实例化,也就是说,父类的实例对象是先创建出来的,调用后,再去修改子类的构造函数中的this完善原型对象

    总结:

      ES5和ES6继承最大的区别就是在于:
        1.ES5先创建子类,在实例化父类并添加到子类this中
        2.ES6先创建父类,在实例化子集中通过调用super方法访问父级后,在通过修改this实现继承

  • 相关阅读:
    Spring Boot 无侵入式 实现 API 接口统一 JSON 格式返回
    Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合
    排名前 16 的 Java 工具类
    万字详解,JDK8 的 Lambda、Stream 和日期的使用详解
    这样规范写代码,同事直呼“666”
    Java多线程高并发学习笔记——阻塞队列
    零散的MySQL基础总是记不住?看这一篇就够了!
    Java 中自定义注解及使用场景
    最简单的6种防止数据重复提交的方法!
    选择数据库联系人【选择之后将不在列表】
  • 原文地址:https://www.cnblogs.com/wymbk/p/9290232.html
Copyright © 2011-2022 走看看