我们在调用构造函数时,会继承它的所有属性,比如一个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属性,如果它是由构造函数创建而来的,那么它就是它的构造函数的一部分

最后修改:2019 年 12 月 10 日 07 : 44 PM
如果觉得我的文章对你有用,请随意赞赏