原型继承方式之间的差异

时间:2019-04-21 18:09:11

标签: javascript inheritance prototype

我遇到了以下提到的在javascript中实现原型继承的方法。

方法1:

Dog.prototype = Object.create(new Animal());

方法2:

Dog.prototype = new Animal();

方法3:

Dog.prototype = Animal.prototype;

我尝试为此创建一个简单的演示,所有这些都给出了完全相似的最终结果。

下面是代码段

function Animal(name) {
    this.name = name;
}
Animal.prototype.sleep = function() {
    console.log(this.name + ': Zzz...');
}
function Dog(name) {
    this.name = name;
}
     
// Create a reference for the prototype Way 1
Dog.prototype = Object.create(new Animal());

// Create a reference for the prototype Way 2
Dog.prototype = new Animal();

// Create a reference for the prototype Way 3
Dog.prototype = Animal.prototype;
  
Dog.prototype.makeSound = function() {
    console.log(this.name + ': Woof woof!');
}
Dog.prototype.sleep = function() {
    console.log(this.name + ': Overriding Zzzz....');
}
var dog = new Dog('Lassie');
dog.makeSound(); // Lassie: Woof woof!
dog.sleep(); // Lassie: Overriding Zzzz....

如果有人可以帮助我;想知道所有这些之间是否存在战略差异? 所有这些不同方式的程序细微差别是什么?

0 个答案:

没有答案