美文网首页
【JS第28期】继承-借用构造函数

【JS第28期】继承-借用构造函数

作者: 前端刊物_bill | 来源:发表于2018-05-01 21:33 被阅读0次

上期我们介绍了下原型链,知道了它潜在的问题,我们这期运用借用构造函数来解决上期遗留问题。回顾以下:

上期遗留问题

  1. 包含引用类型的原型属性会被所有实例共享,因此,我们如果一个实例中修改了这个原型属性,那么,其他实例的对应属性也会改变
  2. 在创建子类型的实例时,不能向父类构造函数中传递参数。

我们是否可以在子类型构造函数的内部调用父类的构造函数?了解apply()、call()方法的应该知道,这两个方法可以在新创建的对象上执行构造函数。因此我们可以做如下处理:

function SuperType() {
  this.colors = ['red', 'blue', 'green'];
}
function SubType() {
  // 继承SuperType
  SuperType.call(this);
}
var instance1 = new SubType();
instance1.colors.push('black');
console.log(instance1.colors) // 'red', 'blue', 'green', 'black'

var instance2 = new SubType()
console.log(instance2.colors) //  'red', 'blue', 'green'

通过调用call() 方法,我们会在SubType的每个实例中都会创建一个colors的副本。

第一个问题解决了,那么我们考虑下第二个问题,我们知道call(),第一个参数为一个对象,第二个参数为给当前对象传参。那么我们是否可以考虑如下修改:

function SuperType(name) {
  this.name = name;
}
function SubType() {
  // 继承SuperType
  SuperType.call(this, 'bill');
}
var instance = new SubType()
instance.name // bill

借用构造函数的问题

  • 方法定义在构造函数中,方法无法复用
qrcode_for_gh_76cb9bd1051f_344.jpg

相关文章

  • JavaScript 面向对象 (2)

    JS 如何继承? 借用构造函数继承 : function SuperType(name){ ...

  • 2019-03-25 继承

    js中通过原型来实现继承 组合继承:原型继承+借用构造函数继承

  • 继承

    传统继承(原型链) 过多的继承了没用的属性 借用构造函数 不能继承借用构造函数的原型每次构造函数都要多走一个函数 ...

  • JavaScript几种继承方式及其优缺点总结

    •借用构造函数 (又叫伪造对象或经典继承)•组合继承(也叫伪经典继承)•寄生组合式继承 ☞借用构造函数继承 原理:...

  • js中实现继承的方式

    原型继承 借用构造函数继承 组合继承:

  • 继承,命名空间

    继承发展史 1.传统形式-->原型链过多的继承了没用的属性2.借用构造函数不能继承借用构造函数的原型每次构造函数都...

  • javascript基础学习笔记2

    继承发展史 1.传统形式—>原型链过多的继承了没用的属性 2.借用构造函数不能继承借用构造函数的原型每次构造函数都...

  • JavaScript的六种继承方式

    JavaScript的几种继承方式 原型链继承 借助构造函数继承(经典继承) 组合继承:原型链 + 借用构造函数(...

  • 【JS第28期】继承-借用构造函数

    上期我们介绍了下原型链,知道了它潜在的问题,我们这期运用借用构造函数来解决上期遗留问题。回顾以下: 上期遗留问题 ...

  • 前端面试题总结【38】:javascript继承的 6 种方法

    原型链继承 借用构造函数继承 组合继承(原型+借用构造) 原型式继承 寄生式继承 寄生组合式继承 推荐: 持续更新...

网友评论

      本文标题:【JS第28期】继承-借用构造函数

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