繁体   English   中英

JavaScript中对象扩充和类扩充之间的区别

[英]Difference between object augmentation and class augmentation in javascript

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

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

一般要点是:

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

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

内存问题值得考虑。 当您创建数千个对象时,这意味着在对象方法中将包含成千上万个功能对象,而在原型方法中将意味着更少的功能对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM