随笔 - 223  文章 - 0 评论 - 6 阅读 - 39万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

通过es5 实现 类继承 通过super 给父级传参的效果

先看看 原型继承

复制代码
  function es5parent(name, age) {
    this.name = name;
    this.age = age;
  }

  es5parent.prototype.say = function() {
    console.log(this.name, this.age, this.sex);
  }
  
  function es5child(sex) {
    this.sex = sex;
  }
  
  es5child.prototype = new es5parent('李四',21);
  es5child.prototype.say1 = function() {
    this.say();
  }

  const es5obj = new es5child('');
  es5obj.say1(); //输出 李四 21 女
复制代码

这里 实例是无法像父构造函数传参的,在实例对象之前就已经调用了父函数

再看看 类继承, 是可以通过创建实例化对象的时候 把参数通过super传递到父类

复制代码
  class parent {
    constructor(name, age){
      this.name = name;
      this.age = age;
      console.log(name, age); // 输出 张三 23
    }
    say() {
      console.log(this.name, this.age, this.sex);
    }
  }

  class child extends parent {
    constructor(name, age, sex) {
      super(name, age);
      this.sex = sex;
    }
    say1() {
      this.say();
    }
  }

  const obj = new child('张三', 23, '');
  obj.say1(); // 输出 张三 23 男
复制代码

es5 通过call 实现

复制代码
  function es5parent(name, age) {
    this.name = name;
    this.age = age;
  }

  es5parent.prototype.say = function() {
    console.log(this.name, this.age, this.sex);
  }
  
  function es5child(name, age, sex) {
    this.sex = sex;
    es5parent.call(this, name, age);
  }
  
  es5child.prototype = new es5parent();
  es5child.prototype.say1 = function() {
    this.say();
  }
  const es5obj = new es5child('李四', 21, '');
  es5obj.say1(); // 李四 21 女
复制代码

 

posted on   浅唱年华1920  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示