JS用原型链继承

93 阅读1分钟

JS用原型链继承

代码

function Animal(legs) {
  this.legs = legs;
}
Animal.prototype.kind = "动物";

function Dog(name) {
  this.name = name;
  Animal.call(this, 4); //关键代码1
}
Dog.prototype.__proto__ = Animal.prototype; //关键代码2
Dog.prototype.kind = "狗";
Dog.prototype.say = function () {
  console.log(`汪汪汪~ 我是${this.name},我有${this.legs}条腿。`);
};

const dog1 = new Dog("啸天"); // Dog 函数就是一个类
console.dir(dog1);

关键代码2可以替换

var f = function () {}; //弄出一个f的构造器
f.prototype = Animal.prototype; // f构造器的原型就是Animal的原型
Dog.prototype = new f();  // Dog构造器的原型继承于f的原型,也就是Animal的原型