我是一名Javascript新手,刚刚完成了codeAcademy的长期Javascript课程。我有一些关于prototype
的问题。
我知道prototype
主要用于继承,并且也可以动态地为对象定义方法。
但是我仍然有一些疑问。看看我的代码。我在对象Animal
中定义了一个toString
,并使用prototype
定义了另一个toString
。当我运行它时,为什么会显示:[Object] Dumbo 4
而不是[Proto] Dumbo 4
?
function Animal(name, numLegs){
this.name = name;
this.numLegs = numLegs;
this.toString = function(){
return "[Object]" + this.name + " " + this.numLegs + "\n";
};
}
Animal.prototype.toString = function(){
return "[Proto]" + this.name + " " + this.numLegs + "\n";
};
var animal = new Animal("Dumbo", 4);
console.log(animal.toString());
toString
。在Animal.prototype.toString
之前放置带有一些消息的console.log
,并在this.toString
之前放置另一个消息。 - zerkms[[Prototype]]
链上的属性。因此,在实例上找到的(在构造函数中分配,因此每个实例都有自己的副本)比继承的(每个实例共享)更先。 - RobGthis
是什么:http://stackoverflow.com/a/19068438/1641941 - HMR