js 继承使用不难,要说清楚,须要本身必定总结,才能说清楚。javascript
es5 的继承方式有不少种,这个是 js 语言自己形成,可是类实现继承以后的功能,有以下 3 条:java
es5 继承最主要的原型式继承方法,这个函数步骤分为 4 步骤:app
Fn.prototype = Super.prototype
。var fn = new Fn()
,将 Child.prototype = fn
。Child.prototype.constructor = Child
。Child
构造函数中封装一个 super
方法,来继承父类里的构造函数。ps:固然步骤 1 和 2 可用 Object.create()
来替代。函数
代码以下:this
function extends (Sup, Sub) { // var Fn = function () {} // Fn.prototype = Sup.prototype // var fn = new Fn() // Sub.prototype = fn Sub.prototype = Object.cteate(Sup.prototpye) Sub.prototype.constructor = Sub } function super (Sup) { var args = [] if (arguments.length > 1) { args = Array.protoype.slice.call(arguments, 1) } Sup.apply(this, args) } function Sup (name) { this.name = name } function Sub (name) { super(Sup, name) } extends(Sup, Sub)
内存分析:es5
明白上面一种方式,其余几种方法,就很容易理解。prototype
子类只继父类构造函数里的属性,不继承原型code
子类原型上继承父类全部定义属性,若是子类能够自定义继承构造函数里的属性blog