美文网首页
ES5模拟ES6class继承

ES5模拟ES6class继承

作者: Chris__Liu | 来源:发表于2020-06-20 12:02 被阅读0次
     // ES6继承
     class Human {
        constructor(name) {
          this.name = name;
        }
      }

      class Man extends Human {
        constructor(args) {
          super(args);
        }
        speak() {
          console.log(this.name);
        }
      }
      const jame = new Man("jame");
      jame .speak()


      // ES5继承
      function Human(name) {
        this.name = name;
      }

      function Man(name) {
        Human.call(this, name);
      }

     /**
       1. 这一步不用Child.prototype = Parent.prototype的原因是怕共享内存,修改父类原型对象就会影响子类
       2. 不用Child.prototype = new Parent()的原因是会调用2次父类的构造方法(另一次是call),会存在一份多余的父类实例属性
       3. Object.create是创建了父类原型的副本,与父类原型完全隔离
      */
      Man.prototype = Object.create(Human.prototype);

      Man.prototype.say = function () {
        console.log(this.name);
      };
      // 构造器指向自身
      Man.prototype.contructor = Man;

      const chris = new Man("chris");
      chris.say();

相关文章

  • ES5模拟ES6class继承

  • 面向对象

    this是谁? new到底做了什么? 在 ES5 中如何用函数模拟一个类? 本质为原型链继承human.proto...

  • 前端常见面试题(八)@郝晨光

    ES5/ES6 的继承除了写法以外还有什么区别? ES5寄生组合式继承(只是列举一个方法,ES5继承还有很多实现方...

  • es6class的继承

    Class 可以通过extends关键字实现继承。ES6 的继承机制实质是先创造父类的实例对象this(所以必须先...

  • JavaScript的继承

    前言 忘了整理的理一理。 ES5继承 先不涉及ES6的继承,后面会涉及。这里主要是ES5的继承: 原型链继承 构造...

  • 构造函数

    es5 es6 继承

  • ES5和ES6中继承的不同之处

    ES5和ES6中继承的不同之处 1、JS中视没有继承的,不过可以通过构造函数或是原型等实现继承,ES5实现继承的方...

  • 如何用es5实现继承

    extend (继承) 如何用 es5 实现继承 测试 结果 原文链接

  • ES5 和 ES6 继承比较:

    ES5构造函数和继承: ES6构造函数和继承:

  • 前端面试之js总结之继承

    写在前面 本文前半部分主要讲述es5的继承,后半部分是es6的继承。 es5的继承 原型链继承 不足之处:①创建实...

网友评论

      本文标题:ES5模拟ES6class继承

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