javascript中对象增强和类增强之间的区别

时间:2013-12-14 17:06:56

标签: javascript function object prototype

当我遇到对象和类扩充时,我阅读了一些在线教程,并了解到在对象扩充中,我们不需要使用prototype关键字来创建对象的变量和方法,而在类扩充中,我们需要使用prototype关键字为函数创建变量和方法。几乎两者都是一样的,但我看到方法是为对象创建变量和方法的唯一区别。我想了解对象增强和类增强的具体原因。

1 个答案:

答案 0 :(得分:3)

JavaScript中没有真正的类。它是一种基于OO的语言,但它使用原型继承来实现这一目标。

一般要点是:

  • 当您扩充原型时,具有该原型的所有对象都会受益并获得该功能。优点是使用较少的内存,因为每个人共享相同的功能对象。使用原型时,模拟基于类的语言也更容易。缺点是拥有对物体真正私密的东西更难(但并非不可能)。

  • 当您扩充单个对象时,您可以更灵活地构建对象。您通常可以通过使用闭包来实现私有状态。缺点是每个对象都获得自己的函数对象副本,从而增加了内存使用量。另一个缺点是对象更“特别”,并且用它们创建“类”层次结构更加困难。许多人认为创建这些层次结构通常不是必需的或有用的。

记忆问题值得考虑。当您创建数千个对象时,这将意味着对象方法中有数千个函数对象,并且使用原型方法的函数对象要少得多。