这两种在JavaScript中更改函数原型的方法有什么区别?

时间:2016-06-26 08:56:26

标签: javascript

在下面的代码中,构造函数,对象实例和更改函数原型的两个示例。这两种方法有什么区别?据我所知,第二种方法将更新对象实例,即使它是在声明该实例之后,而另一种则不会。这是唯一的区别吗?

function Foo(name, color) {
  this.name = name;
  this.color = color;
}

var bar = new Foo('name', 'color');

第一种方法:

Foo.prototype = {age: 6};

第二种方法:

Foo.prototype.age = 4;`

1 个答案:

答案 0 :(得分:2)

Foo.prototype = {age: 6};

第一种方法是覆盖构造函数和____proto____链接,如果你使用继承不是一个好的方法,因为你会破坏原型链接和原型链

最好使用

Foo.prototype.age = 4;`

通过这种方式,您只需添加一个属性,所有原型链都将完整地重新发送