首页 > 其他 > 详细

利用构造函数继承父类型属性

时间:2019-12-14 18:49:50      阅读:81      评论:0      收藏:0      [点我收藏+]

在ES6之前并没有提供extends继承,我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承。

核心原理:通过call()把父类型的this指向子类型的this,这样就可以实现子类型继承父类型的属性。

      // 借用父构造函数继承属性
      function Father(name, age) {
        // this指向父构造函数对象的实例
        this.name = name
        this.age = age
      }
      function Son(name, age) {
        // this指向子构造函数对象的实例
        Father.call(this, name, age)
      }
      var son = new Son(‘张三‘, 18)
      console.log(son) // Son {name: "张三", age: 18}

我们通过Father.call(this, name, age)传入Son中的this使Father的this指向改变成son。这样就不需要再在Son中写父类已经拥有的属性了。

而且如果子类还需要有自定义的属性,可以单独定义

      function Son(name, age, score) {
        // this指向子构造函数对象的实例
        Father.call(this, name, age)
        this.score = score
      }
      var son = new Son(‘张三‘, 18, 100)
      console.log(son) // Son {name: "张三", age: 18, score: 100}

当需要继承父类的方法时:

 Father.prototype.money = function() {
        console.log(‘我要赚钱‘)
      }
Son.prototype.exam = function() {
        console.log(‘我要考试‘)
      }

Son.prototype = new Father()

Son.prototype.constructor = Son

一定要记得改回construcotr指向!!!

 

利用构造函数继承父类型属性

原文:https://www.cnblogs.com/perse/p/12040426.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!