`
MirrorAvatar
  • 浏览: 46485 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

借用构造函数继承

阅读更多

基本概念

借用构造函数(constructor stealing)进行继承的基本思想就是:在子类型构造函数的内部调用超类型构造函数

那么,如何调用?函数只不过是在特定环境中执行代码的对象,因此通过使用apply()和call()方法也可以在(将来)新创建的对象上执行构造函数。

示例代码

function SuperType() {
    this.number = [1, 2, 3];
}

function SubType() {
    SuperType.call(this);
}

var instance1 = new SubType();
instance1.number.push(4);
instance1.number;  // "1,2,3,4"

var instance2 = new SubType();
instance2.number;  // "1,2,3"
 

构造函数继承的优势:可以传递参数

function SuperType(name) {
    this.name = name;
}

function SubType() {
    Super.call(this, "MirrorAvatar");
    this.age = 3;
}

var instance = new SuperType();

instance.name;  //MirrorAvatar
instance.age;  //3
 

借用构造函数继承的问题

  1. 方法都在构造函数中定义,函数无复用性;
  2. 在超类型的原型中定义的方法,对子类型而言也是不可见的,结果所有类型都只能使用构造函数模式。

以上,构造函数的技术很少单独使用。

1
0
分享到:
评论

相关推荐

    02_借用构造函数继承.html

    02_借用构造函数继承.html

    JS继承之借用构造函数继承和组合继承

    借用构造函数继承  在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术(有时候也叫做伪造对象或经典继承)。这种技术的基本思想相当简单,即在...

    JavaScript如何借用构造函数继承

    这篇文章主要介绍了JavaScript如何借用构造函数继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 借用构造函数继承是在子类型构造函数的内部调用超类型构造...

    全面了解构造函数继承关键apply call

    apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性. Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组,它将作为参数传给Function(args–>...

    浅谈JS继承_借用构造函数 & 组合式继承

    为解决原型中包含引用类型值所带来的问题, 我们使用一种叫做 借用构造函数(constructor stealing)的技术(又叫伪造对象或经典继承)。 这种技术的基本思想:在子类构造函数内部调用超类型构造函数。 通过使用...

    JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)

    证明你对JavaScript面向对象已经有一定的了解,如还有什么不理解的可以参考《面向对象JS基础讲解,工厂模式、构造函数模式、原型模式、混合模式、动态原型模式》,接下来讲一般通过那些方法完成JavaScript的继承。...

    wenfujie#document-library#原型以及原型链1

    使用构造函数创建对象原型小结原型链js中继承的几种方法原型链继承借用构造函数继承组合继承原型式继承寄生式继承(常用)寄生组合式继承使用构造函数创建对象var p

    【JavaScript源代码】深入JS继承.docx

     目录 前言准备总结继承的n种方式原型式继承原型链式继承借用构造函数(类式继承)组合继承寄生组合式继承结束语 前言 准备 总结 继承的n种方式 原型式继承原型链式继承借用构造函数(类式继承)组合继承寄生组合...

    JavaScript中使用构造函数实现继承的代码

    JavaScript中借用构造函数实现继承的代码,需要的朋友可以参考下。

    作为前端,你需要懂得javascript实现继承的方法

    借用构造函数继承父类型属性3. 借用原型对象继承父类型方法总结 ES6之前并没有给我们提供extends继承,我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承。 1. call() 调用这个函数,并且修改函数运行时...

    15分钟深入了解JS继承分类、原理与用法

    所以,下面所要说的原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承和寄生组合式继承都属于实现继承。 最后的最后,我会解释 ES6 中的 extend 语法利用的是寄生组合式继承。 1. 原型链继承 ...

    JavaScript继承模式粗探

    真正意义上来说Javascript并不是一门面向对象的语言,没有提供传统的继承方式,但是它提供了一种原型继承的方式,利用自身提供的...1.借用构造函数继承 function Father (name) { this.name=name; } function Son (n

    JavaScript基础整理

    本人学习前端时的总结笔记,包含数据类型、循环结构、分支结构、函数预解析、常用内置对象方法、浏览器兼容...1、什么是借用构造函数继承 2、 什么是通过修改原型指向实现继承 3、什么是组合继承 4、什么是拷贝继承

    haohailiang#manual#6-3-继承-JS高级程序设计1

    6.3.1稳妥构造函数模式 6.3.2借用构造函数 6.3.3组合继承[借用构造函数+原型链]

    JavaScript模式中文[pdf] 百度云

     类式继承模式#2——借用构造函数  类式继承模式#3——借用和设置原型  类式继承模式#4——共享原型  类式继承模式#5——临时构造函数  Klass  原型继承  通过复制属性实现继承  借用方法  小结  第7章 ...

    JavaScript模式 斯托扬·斯特凡洛夫 著

    类式继承模式#2——借用构造函数 类式继承模式#3——借用和设置原型 类式继承模式#4——共享原型 类式继承模式#5——临时构造函数 Klass 原型继承 通过复制属性实现继承 借用方法 小结 第7章 设计模式 单体模式 工厂...

Global site tag (gtag.js) - Google Analytics