使用 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();
上阅读有关 classes 的更多信息
我有点初学者,我曾经知道非常基础的知识,但在那之后就停止了编程。
在 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();