我有一些与原型有关的问题。
如果我们Dog
通过Person
函数构造函数创建了一个对象。SayPerson
在每个实例成员上有 2 个属性。
var Dog = function (name,color){
this.name = name,
this.color = color
};
现在我们已经创建了 10 个对象,比如Pug
,Bulldog
等等。
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