Javascript 在我改变了它的原型之后,为什么这两个构造函数会变得不同呢

Javascript 在我改变了它的原型之后,为什么这两个构造函数会变得不同呢,javascript,prototype,Javascript,Prototype,假设我定义了一个构造函数,比如 职能人员(姓名){this.name=name} 并创建一个新对象var p1=newperson(“Peter”) 之后,我将构造函数的原型更改为Person.prototype={species:“human”},我发现p1.species是未定义的。但是,如果我创建一个新对象,如p2=newperson(“John”)p2。物种是“人类” 职能人员(姓名){this.name=name} 风险值p1=新人(“彼得”) Person.prototype={s

假设我定义了一个构造函数,比如

职能人员(姓名){this.name=name}

并创建一个新对象
var p1=newperson(“Peter”)

之后,我将构造函数的原型更改为
Person.prototype={species:“human”}
,我发现
p1.species
未定义的
。但是,如果我创建一个新对象,如
p2=newperson(“John”)
<代码>p2。物种是
“人类”

职能人员(姓名){this.name=name}
风险值p1=新人(“彼得”)
Person.prototype={species:“human”}
控制台日志(p1.种类)
变量p2=新人(“约翰”)

console.log(p2.species)
不要覆盖原型,而是添加一个键:

职能人员(姓名){
this.name=名称;
}
风险值p1=新人(“彼得”);
Person.prototype.species=“人”;
变量p2=新人(“约翰”);
控制台日志(p1.物种,p2.物种);

console.log(p1 instanceof Person,p2 instanceof Person)不要覆盖原型。而是编写
Person.prototype.species=“human”。嗯,
.constructor
属性通常是原型对象的一部分。您的对象没有(只有它从
object.prototype
继承的对象)。我知道这不是创建对象的正确方法。我只是想知道这将如何发生