我们在调用构造函数时,会继承它的所有属性,比如一个Bird()
function Bird(name){
this.name = name;
}
我们创建了几个个对象来调用构造函数
var bird1 = new Bird("bird1");
var bird2 = new Bird("bird2");
var bird3 = new Bird("bird3");
var bird4 = new Bird("bird4");
然后,我们突然发现这些新建的对象都有一个共同的属性:它们的腿的数量都是2;
于是我们可以直接进行修改
bird1.numLegs = 2;
...
...
在数量少的时候,我们可以很轻松的修改,如果这个构造函数被调用了一百万次,那么我们如何修改?
在这里使用prototype函数进行修改
Bird.prototype.numLegs = 2;
这样的话,我们的构造函数就相当于:
function Bird(name){
this.name = name;
this.numLegs = 2; //直接在构造函数中添加了这个属性
}
当我们再次使用对象时就可以输出它的值
console.log(bird1.numLegs); //输出2
console.log(bird2.numLegs); //输出2
console.log(bird3.numLegs); //输出2
console.log(bird4.numLegs); //输出2
...
可见,可以采用prototype方法来减少重复代码,这样可以很大程度避免低级错误。
每个对象都有自己的prototype属性,如果它是由构造函数创建而来的,那么它就是它的构造函数的一部分