js的继承实现(ES5,ES6)
2019-04-20 18:53
323 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_40865038/article/details/89421670
ES5:通过原型链实现继承
通过原型实现继承,最简单的方法就是
SubClass.Prototype = new SuperClass()
但是这种方式有一个弊端,就是会丢失SubClass.Prototype上的原有constructor
constructor 属性是创建实例对象的函数的引用,我们可以通过constructor属性验证实例的原始属性
通过Subclass.Prototype.constructor = SubClass可以解决,但是这样也有问题
这样会导致Subclass.Prototype上所有属性都是可枚举的,包括constructor
所以要用Object.defineProperties()进一步优化
操作如下:
Object.defineProperty(SubClass.Prototype,"constructor",{ enumerable: false, value: SubClass, writable: true })
配置对象的属性api Object.defineProperty()参考
https://dwz.cn/hAGc8tuM
ES6:通过class实现继承
class Person(){ constructor(name){ this.name = name } } class Ninja extends Person{ // 构造函数 constructor(name, weapon){ super(name) this.weapon = weapon } // 每个实例均可访问的方法 swingSword(){ return true } // 静态方法 static compare(ninja1, ninja2){ } }
相关文章推荐
- JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
- ES5和ES6中对于继承的实现方法
- 【JavaScript】使用原生JS实现bind函数(基于ES5和ES6的两种不同版本)
- js重新讲解继承,es5的一些继承,es6继承的改变 ----------由浅入深
- ES5和ES6中对于继承的实现方法
- ES5和ES6两种方式实现元素拖动(知识点es5原型继承和es6继承)
- js中es5 继承实现
- es6继承 vs js原生继承(es5)
- 【JS复习笔记】03 继承(从ES5到ES6)
- JavaScript原型链以及ES3、ES5、ES6实现继承的不同方式
- js的继承实现
- node.js面向对象实现(二)继承
- [置顶] js继承有5种实现方式,你知道几种?
- js如何实现继承
- js继承的实现---object.extend(d,s)方法
- 原生js深入理解系列(六)--- JavaScript中的继承超全实现方式
- 使用Ext实现js的继承,以及扩展Ext组件的思路
- JS 中的继承实现
- js如何实现继承及其优缺点
- JS实现继承