我有一些与原型有关的问题。
如果我们创建了一个对象,请在Dog
函数构造函数的帮助下说Person
。说Person
在每个实例成员上都有2个属性。
var Dog = function (name,color){
this.name = name,
this.color = color
};
现在我们已经从中创建了10个对象,例如Pug
,Bulldog
等。>
中添加另一个属性,以使所有object都可以访问它。我们可以通过两种方式做到这一点:var Pug =new Dog('pug','white'); var Bulldog =new Dog('Bulldog','black');
现在我们突然想在Dog
this.leg : 4
中var Dog = function (name,color){
this.name = name,
this.color = color,
this.leg = 4
};
或
Dog.prototype.leg = 4;
现在我的问题是在每个这些变体中,该属性将被添加为其原型属性,意味着作为原型成员而不是作为实例成员?为什么?
如果创建对象后我们想要添加一些属性,并且希望将其添加为实例成员意味着拥有属性,我该怎么办?
我在浏览器控制台中得到的内容:
Pug { name : 'pug',color :'white'} _ proto_ : { leg :4 }
我期望的是:
Pug { name : 'pug',color :'white',leg :4 } _proto_ :Object
我对原型有一些疑问。如果我们创建了一个对象,请通过Person函数构造函数说Dog。说人在每个实例成员上都有2个属性。 var Dog = ...
[执行此操作时,实际上是在修改原型本身,而不是内存中的整个Dog.prototype.leg = 4;
实例。但是,将来的实例化对象将继承该新属性。
实例化时,内存中的现有实例将继续具有先前存在的属性。