66-继承方式一

  • 在企业开发中, 如果构造函数和构造函数之间的关系是 is a 的关系, 那么就可以使用继承来优化代码, 来简化代码的冗余度, 如: 学生 is a 人, 学生是一个人

    • 第一种继承方式就是通过修改当前对象的原型对象为需要继承的对象, 如当前的对象是学生, 学生是人, 所以可以继承人的属性, 这里的人就是需要继承的对象

          function Person() {
              this.name = null;
              this.age = 0;
              this.say = function () {
                  console.log(this.name, this.age);
              }
          }
          let per = new Person();
      
          // 在企业开发中, 如果构造函数和构造函数之间的关系是is a的关系, 那么就可以使用继承来优化代码, 来简化代码的冗余度
          // 学生 is a 人, 学生是一个人
          function Student() {
              this.study = function () {
                  console.log("day day up");
              }
          }
          // 修改stu实例对象的原型对象为per实例对象
          Student.prototype = new Person();
          Student.prototype.constructor = Student;
      
          let stu = new Student();
      
          stu.name = "zs";
          stu.age = 18;
          stu.say();  // zs 18
          stu.study();  // day day up
      
      66-继承方式一_第1张图片
  • 继承方式一弊端
    • 父类可以在创建对象的时候传参, 子类不可以, 所以在企业开发中, 这种继承方式并不常见

          function Person(myName, myAge) {  // 父类可以传这两个参
              this.name = myName;
              this.age = myAge;
              this.say = function () {
                  console.log(this.name, this.age);
              }
          }
          let per = new Person("lnj", 34);
          per.say();
      
          // 学生 is a 人, 学生是一个人
          // 在这里只能找到myScore, 找不到myName, myAge
          // 所以继承方式一的弊端就是没法在创建Student对象的时候, 同时给它指定myName, myAge属性
          function Student(myName, myAge, myScore) {  // 子类不能传这两个参
              this.score = 0;
              this.study = function () {
                  console.log("day day up");
              }
          }
          // 执行到这的时候才能找到myName, myAge
          Student.prototype = new Person();
          Student.prototype.constructor = Student;
      

你可能感兴趣的:(66-继承方式一)