为什么我们需要为javascript中的原型继承创建一个新对象

为什么我们需要为javascript中的原型继承创建一个新对象,javascript,node.js,inheritance,prototypal-inheritance,Javascript,Node.js,Inheritance,Prototypal Inheritance,我不熟悉Node/Javascript。我已经浏览了很多博客,了解了继承在javascript中是如何工作的,但仍然有些困惑 下面是我设置的示例 var=function(){ this.prop1=“test1”; } Madama.prototype.greet=函数(){ log(“Hello Word”+this.prop1); } var Animal=函数(){ 哺乳动物。叫(这个); this.prop2=“test2”; } Animal.prototype=哺乳动物.prot

我不熟悉Node/Javascript。我已经浏览了很多博客,了解了继承在javascript中是如何工作的,但仍然有些困惑

下面是我设置的示例

var=function(){
this.prop1=“test1”;
}
Madama.prototype.greet=函数(){
log(“Hello Word”+this.prop1);
}
var Animal=函数(){
哺乳动物。叫(这个);
this.prop2=“test2”;
}
Animal.prototype=哺乳动物.prototype;
//Animal.prototype=Object.create(哺乳动物.prototype);
var a=新动物();

a、 问候()正确的方法是将动物原型设置为另一个对象,该对象由哺乳动物创建,而不是直接设置为该哺乳动物。并在设定原型后,也设定了动物的构造器

为什么要使用其他对象?

因为有不同的对象。当您设置
Animal.prototype=哺乳类.prototype
时,这意味着您引用的是同一个对象。对于
动物
,构造函数将是不正确的
哺乳动物
函数。因此,我们创建了另一个对象,它采用了
哺乳动物原型
的属性和功能,而这个对象现在不同了。毕竟,我们将该对象的构造函数设置为
Animal
,因此每个动物的构造函数都是
Animal
函数

请参见这里的第一种方法。动物和哺乳动物返回相同的构造器,这是错误的

var=function(){
this.prop1=“test1”;
}
Madama.prototype.greet=函数(){
log(“Hello Word”+this.prop1);
}
var Animal=函数(){
哺乳动物。叫(这个);
this.prop2=“test2”;
}
Animal.prototype=哺乳动物.prototype;
Animal.prototype.constructor=动物;
var a=新动物();
console.log(a.constructor);
var m=新的哺乳动物();

console.log(m.constructor)你能解释一下为什么这是实现继承的最佳方式吗???@NiteshGoyal阅读了最后一篇文章part@SurenSrapyan字体即使这样也行<代码>Animal.prototype=新的哺乳动物()。我对所有这些概念没有一个清晰的了解。@DeepakKumarPadhy它会起作用,因为它是一个单独的对象,但在JS中,通用函数是在prototype中设置的,所以我会在每个对象中保留自定义函数,不允许使用它,因为对象也可以有属性和它们的值,为什么你要把它们送给所有的动物