码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-12-14 19:10:00      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:new   父类   prot   fun   对象   继承   自定义   类的方法   UNC   

在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指向!!!

 

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

标签:new   父类   prot   fun   对象   继承   自定义   类的方法   UNC   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!