我看到的绝大多数javascript代码都使用原型方法。我认为有三个原因,我可以想到我的头顶。
第一,避免让每个类都成为一个巨大的构造函数:构造函数逻辑在构造函数中,其他方法的逻辑在其他地方声明-这主要是一个清晰的东西/关注点的分离,但是在javascript中,你需要尽可能的清晰。
二是效率。在构造函数中声明方法时,您将为对象的每个实例创建一个函数对象的新实例,并将构造函数的作用域绑定到这些函数中的每一个(也就是说,它们可以将参数引用到构造函数,只要该对象存在,构造函数就永远不可能被GC_d_当您在原型上声明方法时,所有实例都使用函数对象的一个副本-Prototype属性不会复制到实例中。
第三个原因是,当您使用Prototype方法时,可以各种方式“扩展”一个类,例如Backbone.js和CoffeeScript的类构造所使用的原型链接。