JS 早期没有继承的原因,可以在这里找到. 实现 继承有多种方式,下面一一列举
1,利用class
ES 6退出后 js有真正的类 class ,也有了 extends
class Polygon { constructor(height, width) { this.name = ‘Polygon‘; this.height = height; this.width = width; } } class Square extends Polygon { constructor(length) { super(length, length); this.name = ‘Square‘; } }
2,利用call或apply方法
// Animal原型上的方法不会被Cat继承 function Animal(){ } function Cat(name,color){ Animal.apply(this); this.name = name; }
3,利用prototype
function Animal(){} Animal.prototype.run = function(){ console.log(‘run‘); } function Cat(name,color){ this.name = name; } Cat.prototype = new Animal(); Cat.prototype.constuctor = Cat(); var cat = new Cat(‘ami‘,‘red‘) cat.run()
4,拷贝prototype继承
function _extend(Child, Parent) { var p = Parent.prototype; var c = Child.prototype; for (var i in p) { c[i] = p[i]; } c.__super = p; }