【发布时间】:2015-07-12 09:49:04
【问题描述】:
使用 RequireJS,我构建了一个小脚本。根据传递给函数的内容,需要另一个文件——所以它可能类似于一个真正的简单工厂。想象一下:
function MyThing(a) {
if (a > 2) {
this.script = require['lib1'];
} else {
this.script = require['lib2'];
}
}
我是其他语言(我来自 PHP),我可以在两个类中实现相同的接口,并确保 lib1 和 lib2 都共享接口中定义的函数。
如果它在 JavaScript 中像这样工作,那么我可以调用 this.script.getId() 或类似的东西,它会正常工作,无论是使用 lib1 还是 lib2。
不幸的是,JavaScript 中没有接口(@987654321@ 很好地解释了为什么它没有意义),所以我有点纠结于应该如何处理它。
当然,我可以创建一个映射到两个库的接口之类的东西,但我觉得这是处理它的错误方法。
解决我遇到的问题的正确方法是什么?
【问题讨论】:
-
到底是什么问题?你需要“处理”什么?在 JavaScript 中,对象就是对象。只要确保您的对象有一些共同的属性集就可以了。
-
@Pointy 这正是问题所在——在其他语言中,我可以确保使用接口有一些通用属性。一致性将通过语言的特性强制执行。在 JavaScript 中,这只是开发人员的善意;-)
-
是的,这就是 JavaScript 的本质。
-
@Sven:然后使用 typescript 或其他可以让您进行类型检查和接口一致性的东西,并编译为 js
标签: javascript oop interface