1、组合继承综合了原型链和盗用构造函数,将两者的优点集中了起来。既可以把方法定义在原型上以实现重用,又可以让每个实例都有自己的属性。
2、过程中调用两次父类构造函数。
一次是子构造函数使用apply/call调用的父构造函数,另一次是子类使用原型继承时,父类实例赋给子类的原型对象时调用的父类构造函数
实例
function A(name,age,sex){ this.name = name; this.age = age; this.sex = sex; this.arrs = [1,2,3] }; A.prototype.sayName = function(){ return this.name } function B(name,age,sex){ A.apply(this,arguments) } B.prototype = new A(); Object.defineProperty(B.prototype,"constructor",{ enumerable:false, value:B }) let C1 = new B('C1',18,'male'); let C2 = new B('C2',18,'female'); console.log(C1.sayName()); //"C1" C1.arrs.push(4); console.log(C1.age,C1.sex,C1.arrs); //18,'male',[1,2,3,4] console.log(C2.sayName()); //"C2" console.log(C2.age,C2.sex,C2.arrs); //18,'female',[1,2,3]
以上就是JavaScript组合继承的实现,希望对大家有所帮助。更多Javascript学习指路:Javascript
推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试