使用 call() 方法与设置原型 属性 进行继承

Using call() method vs setting prototype property for inheritance

我有点初学者,我曾经知道非常基础的知识,但在那之后就停止了编程。

在 JavaScript 的原型继承中,我 found/learned 有两种实现方法。

使用构造函数的prototype 属性:

function Mammal(name) {
    this.name = name,
    this.order = "Mammal",

    this.sayHi = function() {
        console.log("My name is " + this.name);
    }
}

function Cat(name) {
    this.name = name;
    this.family = "Felidae";
}

Cat.prototype = new Mammal();

let lion = new Cat("Lion");

或者调用Mammal.call(this, name)方法。

这两个结果有什么区别?如果两者不同,首选哪一个?

通常,我们在许多程序语言中使用class关键字来定义一个class。在 Javascript 中,您可以使用 class 关键字使用简单明了的语法定义 classes。

要么用你说的两种方式,要么用class关键字:

class Mammal {
  constructor(name) {
    this.name = name;
    this.order = 'Mammal';
  }

  sayHi() {
    console.log('My name is ' + this.name);
  }
}

class Cat extends Mammal {
  constructor(props) {
    super(props);
    this.family = 'Felidae';
  }
}

let lion = new Cat('Lion');

lion.sayHi();

MDN or W3S

上阅读有关 classes 的更多信息