JavaScript中的接口是否必要?

lom*_*axx 22 javascript oop dynamic-languages interface

我想这可以适用于任何动态语言,但我使用的是JavaScript.我们有一种情况,我们在JavaScript中编写了一些需要公开Send()函数的控件,然后由承载JavaScript的页面调用该函数.我们有一个定义了此Send函数的对象数组,因此我们遍历集合并在每个对象上调用Send().

在OO语言中,如果你想做类似的事情,你会有一个IControl接口,它有一个必须由每个控件实现的Send()函数,然后你有一个你要迭代的IControl实现的集合通过并调用send方法.

我的问题是,JavaScript是一种动态语言,是否需要定义控件应该继承的接口,还是只需要调用控件上公开的Send()函数就足够了?

Joh*_*ett 10

动态语言通常鼓励Duck Typing,其中对象的方法决定了它应该如何使用而不是显式契约(例如接口).

  • 我不认为界面与鸭子打字形成鲜明对比.恰恰相反,实际上.通过声明一个接口,您可以清楚地说明您将尝试调用哪些方法.我经常发现接受文件类似对象的方法,而没有任何明确指示文件类对象应该实现的内容.read()和close()足够吗?我还需要seek()吗?写()怎么样?界面是一种清晰明确的方式来表达您的需求,因此是一个很大的增强**,特别是**如果你想依靠鸭子打字 (35认同)
  • 甚至具有简单地声明参数应该具有哪些方法和成员的ad-hoc接口的能力也是有用的.它不必是命名接口 - 只是一个值约束. (2认同)