Javascript 为什么实例化的对象即使在原型被重新分配给空对象之后仍然具有原型的属性?

Javascript 为什么实例化的对象即使在原型被重新分配给空对象之后仍然具有原型的属性?,javascript,Javascript,函数Rabbit(){} Rabbit.prototype={ 吃:是的 }; 让兔子=新兔子(); Rabbit.prototype={}; 警惕(兔子吃东西);/实例化兔子的原型,Rabbit,仍然是原始的Rabbit.prototype对象,它有eats:true。重新分配原型并不意味着解释器遍历每个实例化对象并更改原型 如果要更改现有对象的原型,可以使用,如下所示: 函数Rabbit(){} Rabbit.prototype={ 吃:是的 }; 让兔子=新兔子(); Rabbit.pr

函数Rabbit(){}
Rabbit.prototype={
吃:是的
};
让兔子=新兔子();
Rabbit.prototype={};

警惕(兔子吃东西);/实例化兔子的原型,
Rabbit
,仍然是原始的
Rabbit.prototype
对象,它有
eats:true
。重新分配原型并不意味着解释器遍历每个实例化对象并更改原型

如果要更改现有对象的原型,可以使用,如下所示:

函数Rabbit(){}
Rabbit.prototype={
吃:是的
};
让兔子=新兔子();
Rabbit.prototype={};
setPrototypeOf(rabbit,rabbit.prototype);
警惕(兔子吃东西);/
函数Rabbit(){}
Rabbit.prototype={
吃:是的
};
让兔子=新兔子();
Rabbit.prototype={};
警惕(兔子吃);
让兔子2=新兔子();

警惕(兔子2.吃)//如果您设置
Rabbit.prototype.eats={},则现在将显示未定义的
它确实会更改它,即使对于已经实例化的兔子也是如此。这是为什么?因为这样,你就改变了原型(兔子原型引用的对象),而不是将原型重新分配给全新的东西(兔子原型没有引用的对象),这也许是对答案的一个很好的补充我想知道这与更新影响现有实例的原型有什么关系?