javascript - 如何利用原型(prototype)继承而不需要按特定顺序包含文件?

标签 javascript prototypal-inheritance

在开发 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/

相关文章:

JavaScript 外部文件不显示变量

javascript - 我的 webpack 文件出了什么问题?

Javascript原型(prototype)和修改原始对象

JavaScript,设置0x​​104567910时使用和不使用 "new"的区别

javascript - 如何使用 Redux 和 ReactJS 向功能组件添加操作

javascript - 如何使用 javascript/jquery 获取数组中选中和未选中的复选框值

javascript - AmCharts 折线图动画

javascript - Javascript继承对象需要 "Subclass.prototype.constructor = Subclass"吗?

javascript - instanceof 检查在不设置构造函数的情况下对子类起作用

javascript - 使用 Max/Min 扩展 Javascript 数组原型(prototype)以查找值