在开发 JavaScript 时,我倾向于将 JavaScript 代码分离到不同的文件中,然后运行脚本来连接文件并压缩或打包生成的文件。最后,我需要将一个文件包含在我的生产站点上。
这种方法通常很有效,但我开始遇到原型(prototype)继承的问题。具体来说,如果一个类从另一个类继承,则需要先包含父类的文件才能使继承起作用。如果我使用的串联脚本只是串联一个充满文件的目录,则子类可能会出现在父类之前的代码中。像这样:
parent_class.js
var Namespace = Namespace || {};
Namespace.Parent = function () { };
Namespace.Parent.prototype.doStuff = function () { ... };
child_class.js
var NameSpace = Namespace || {};
Namespace.Child = function () { ... };
Namespace.Child.prototype = new Namespace.Parent();
唯一有效的方法是,将parent_class.js 包含在child_class.js 之前,如果串联脚本将子代码放在父代码之前,则可能不会发生这种情况。
有没有办法编写此代码,以便功能相同,但代码编写的顺序不再重要?
编辑:我忘记了我也在使用命名空间,所以我也将其添加到代码中,这可能会稍微改变一些事情。
最佳答案
当我开发大型应用程序时,我使用 requireJS将我的代码划分为模块,并确保这些模块以正确的顺序加载。然后我只是将我的派生类标记为依赖于父类。
RequireJS 附带了一个工具,可以组合并缩小所有模块以进行生产部署。
关于javascript - 如何利用原型(prototype)继承而不需要按特定顺序包含文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/279391/