一段时间以来,我一直在开发 javascript 应用程序,通常是较小的脚本来完成简单的任务,但也是一个相当大且复杂的应用程序,它使用Dean Edwards 的 base2 库来创建具有继承的伪经典 OO 类,......在 javascript 中。
base2 库为我提供了很好的服务,主要是因为它使我能够遵循我非常熟悉的经典 OO 范式。我还知道其他几个可用于构建更强大和成熟的 javascript 应用程序的框架(例如, backbone.js )。但我总觉得这种类型的库是一种“作弊”的方式,即构建一种使用该语言实际上不适合的原则编写代码的方式。
我一直在阅读定义对象/函数、实例化它们以及使用原型继承实现多态性的不同方法。这实际上是该语言在基本层面上的工作方式,我觉得我应该利用这一点,而不是认为它很烦人或很奇怪,并试图找到一种方法来按照我习惯的方式做事(经典的 OO 方式)。
因此,查看不使用此类库的应用程序,似乎有很多方法可以编写您的应用程序,而对于 Java、C++ 等传统通用语言......构建应用程序的正确方法似乎更明确(区分好代码和坏代码要容易得多)。如果明天有人问我:“开始为我开发 projectX”,我将不知道如何开始定义和构建我的对象,我可以确定当重组为时已晚时不会回来咬我整个东西。
一个专业的复杂 js 应用程序骨架会是什么样子,使用原型继承,所以不使用任何类型的库来模仿经典的 OO,假设一个简单的 MVC 类型的应用程序,但很容易扩展到更复杂的比例。如何定义我的对象?如何将对象/“类”组合在一起(命名空间)?换句话说:如何做到这一点,而不至于陷入无人理解的混乱局面?