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; }
JS 的 继承
原文地址:https://www.cnblogs.com/xiaxiaodong/p/8280698.html