function inheritPrototype(subType, superType) { function F(){}; //新建一个空对象 F.prototype = superType.prototype; //空对象的原型为父类的原型 var prototype = new F(); //创建对象 prototype.constructor = subType; //增强对象 subType.prototype = prototype; //指定对象 } function SuperType(name) { this.name = name; this.colors = ["red", "blue", "green"]; } SuperType.prototype.sayName = function () { console.log(this.name); }; function SubType(name, age) { SuperType.call(this, name); this.age = age; } inheritPrototype(SubType, SuperType); SubType.prototype.sayAge = function () { console.log(this.age); }; var instance1 = new SubType("Nicholas", 29); console.log(instance1) instance1.colors.push("black"); console.log(instance1.colors); //"red,blue,green,black" instance1.sayName(); //"Nicholas" instance1.sayAge(); //29 var instance2 = new SubType("Greg", 27); console.log(instance2.colors); //"red,blue,green" instance2.sayName(); //"Greg" instance2.sayAge(); //27
相关推荐
### JavaScript寄生式组合继承详解 #### 一、引言 在JavaScript中,对象继承机制是一种非常重要的设计模式。常见的继承方式包括原型链继承、构造函数继承等。今天我们要探讨的是寄生式组合继承——一种结合了原型...
6. **寄生式组合继承**: 结合了寄生式继承和组合继承,子类的构造函数会调用父类的构造函数来获取属性,同时使用原型链来继承方法。这是JavaScript中效率最高且最常用的继承方式,避免了重复属性和方法,但仍有...
总结来说,寄生式继承用于创建对象副本并增强,而寄生组合式继承则通过更高效的方式实现了属性和方法的继承,避免了组合继承的缺点。这两种模式都是JavaScript实现面向对象编程的重要工具,理解它们的原理和应用对于...
在之前javascript面向对象系列的文章里面,我们已经探讨了组合继承和寄生继承,回顾下组合继承: function Person( uName ){ this.skills = [ 'php', 'javascript' ]; this.userName = uName; } Person....
本文实例讲述了JavaScript寄生组合式继承。分享给大家供大家参考,具体如下: 其实《JavaScript高级程序设计》这本书中已经有完整代码了,只要把代码读懂就知道这个继承是怎么回事。 首先,在js中,给对象定义属性有...
这种技术的基本思路是:不必为了指定子类型的原型而调用超类型的构造函数,因为我们所需要的只是超类型原型的一个副本而已(这一点正是组合继承的问题,并且正是JavaScript这种原型式语言的强大之处,直接copy对象-...
13. 抽象继承不是JavaScript的继承方法,JavaScript中常见的继承方式包括原型链、借用构造函数、寄生式组合继承等。(D) 14. 使用jQuery移除超链接的`onclick`属性应使用`$(“a”).removeAttr(“onclick”)`。(A...
寄生式组合继承是实现继承的一种高效方式,它结合了原型式继承和寄生继承的优点。 #### JavaScript 作用域链 作用域链保证了当前执行上下文对变量和函数的有序访问,它是执行上下文中的一个内部属性。 #### this ...
为了解决组合式继承中构造函数被调用两次的问题,可以采用寄生式组合继承。这种方法避免了创建不必要的父类实例,而是直接从父类原型克隆属性和方法。 ```javascript function inheritPrototype(subType, superType...
在JavaScript中,有多种继承实现方式,包括原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承以及寄生组合继承。随着语言的发展,ES6引入了`Class`关键字和`extends`来简化继承的实现,但其底层机制仍...
使用js实现继承的七种方式,详细讲解了js中的原型链继承,构造函数继承,组合继承(经典继承),原型式继承,寄生式继承,寄生组合式继承,以及ES6中的继承,描述原理以及实现和要点概述等。
JavaScript支持多种继承机制,包括原型链继承、构造函数继承、组合继承、寄生式继承以及寄生组合继承等。接下来,我们将详细探讨这些继承方式。 ### 1. 原型链继承 原型链继承是通过将一个对象设置为另一个对象的...
在JavaScript中,实现继承的几种常见方式有:组合继承、原型式继承、寄生式继承以及寄生组合式继承。下面将对这些继承方式进行详细解析。 首先,组合继承(也称伪经典继承)是结合了原型链继承和借用构造函数继承的...