我正在阅读 JavaScript 中的 OOP 并学习了一些关于使用该prototype
对象的知识。在这篇文章中(顺便说一句,读得很好),作者说以下关于将方法声明为 JavaScript 类的属性与在类的原型上声明方法:
这实际上不是最佳的方法。更好的方法是在 Person.prototype 上定义方法。为什么这样更好?任何人?任何人?布勒?在第一个版本中,每次创建一个人时,都会为他创建一个新的 sayHi 函数,而在第二个版本中,只创建一个 sayHi 函数,并在所有创建的人之间共享 - 因为 Person.原型是他们的父母。因此,在原型上声明方法更节省内存。
读完这篇文章后,我开始考虑一个 JavaScript 框架,我偶尔会用它来使用Classy语言来简化 OOP 。在他们的文档中给出的示例中,以及我编写的几乎所有 Classy 代码中,我总是将类的方法直接声明为它的属性(就像在大括号之间而不是在外面一样)。我意识到直接声明 Classy 类的方法是通过对象表示法 (JSON) 完成的,而不是通过直接在类函数内部添加方法的普通 JavaScript 类。
我想知道的是,使用 Classy 创建的对象是否已经利用了针对类的原型声明的方法的性能节省。如果我以与 Classy 的文档相同的方式声明类方法,这些方法是为每个类的实例声明的,还是声明为类的所有实例共享的一种方法?如果是前者,那么我是否能够或应该在 Classy 类的原型中声明方法?
对不起,如果我听起来很混乱。