JavaScript多种继承总结及constructor取值
2017-12-06 15:46
148 查看
以下个人观点,不足之处望能指正(具体源码请参考JavaScript高级程序设计_继承)
注:个人感觉原型上的constructor属性类似于java中的getClass,用来判断实例化的是哪个对象,他的取值并不能影响实例化时调用的构造函数。同时,在ES6中已经实现class继承语法糖
针对于实现自定义类型采用的继承方式
原型链继承
SubType.prototype = new SuperType()//赋值超类实例,子类存在共享引用类型数据的问题 var instance = new SubType()//不能向超类构造函数传参
借用构造函数继承
SuperType.call(this,"xxx")//解决了上述共享引用类型数据,不能传参的问题。但存在函数不能复用的问题,而且无法使用SuperType.prototype定义的方法
组合继承
同时使用SubType.prototype = new SuperType() SuperType.call(this,"xxx") var instance = new SubType() 是比较常用的继承方式,但存在调用了两次SuperType的构造函数的问题,同时,SubType.prototype中存在多余属性(寄生组合式继承相比)
针对于已有对象创建新对象的继承
原型式继承
ES5已实现(Object.creat()) 类似原型链继承,存在同样的问题
寄生式继承
类似于借用构造函数继承,但用于已存在的对象
寄生组合式继承
SuperType.call(this,"xxx")+继承函数 和组合继承式继承最大的区别就是只调用了一次构造函数,并且子类原型上没有多余属性
注:个人感觉原型上的constructor属性类似于java中的getClass,用来判断实例化的是哪个对象,他的取值并不能影响实例化时调用的构造函数。同时,在ES6中已经实现class继承语法糖
相关文章推荐
- JavaScript 面向对象(封装、继承、多态)多种方式实现完全总结
- javascript“类”与继承总结
- 栋栋晓13:Javascript学习总结:原型、原型链和继承。
- JavaScript 原型总结六 继承
- JavaScript学习总结(二十)——Javascript非构造函数的继承
- JavaScript原型链与继承操作实例总结
- javaScript菜鸟:学习js继承后的总结(参考大师示例)
- 总结javascript继承的两种方式的N中写法
- JavaScript实现继承总结
- 深入理解JavaScript继承的多种方式和优缺点
- JavaScript深入之继承的多种方式和优缺点
- JavaScript原型链与继承内容总结
- javascript中动态加载js文件多种解决办法总结
- JavaScript程序中实现继承特性的方式总结
- javascript删除option选项的多种方法总结
- JavaScript关于创建对象和继承的一些总结
- JavaScript 继承的方法总结
- JavaScript学习总结——Javascript非构造函数的继承
- Javascript继承机制总结
- javascript 继承方法总结