Javascript:如果有几种可能性,使用哪个函数?

标签 javascript jquery intellij-idea datatables

如果我通过按 F2 键在 IDEA intellij 中查找像 destroy() 这样的 javascript 函数的定义:

var myTable = $('#myList').dataTable({
    columns: listHeader,
    data: listBody
});

myTable.destroy();

我可以看到几个定义:

destroy in Chart.PluginBase (chart.bundle.js, static) 
destroy in Chart.DatasetController (chart.bundle.js, static) 
destroy in DataTable.defaults (jquery.dataTables.js, static) 
destroy in u (angular-material.min.js, static) 
destroy in v (angular-material.min.js, static) 
destroy in r (angular-material.min.js, static) 

如何强制使用所需的功能?

最佳答案

好吧,问问自己你的对象是什么类型,你就会得到答案。在第 1 行,您将 $('#myList').dataTable() 分配给您的 var,因此现在您的 var 正在继承 dataTable 对象的属性(包括函数属性)。因此,当您现在执行 myTable.destroy() 时,这将使用 dataTable#destroy(列表中的第 3 个)。

这是 prototypal inheritance 的一个特征示例.

编辑:关于你关于“我如何确定我的对象是什么类型”的问题......简而言之,它真的是“你不能”,无论如何都不可靠。 Javascript 根本不是一种静态类型的语言……它允许一些非常AWESOME 的东西。但是,如果您有兴趣,请查看 TypeScript

关于Javascript:如果有几种可能性,使用哪个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41774868/

相关文章:

javascript - Jquery 文本切换

javascript - 在单个页面中处理多个电子邮件 HTML

javascript - Summernote onpaste 不起作用

javascript - 我如何连接两个元素然后在 React 中渲染它们?

javascript - jQuery 和 mysql 在点击时更新数据

php - 2 个使用 jQuery 或 Ajax 的自动完成/建议输入框,第二个框基于多个项目的第一个选择

android-studio - 有没有一种方法可以忽略Android Studio中的代码样式设置

java - Intellij IDEA 中的 BeanInfo

java - IntelliJ IDEA 11 是否能够插入命名空间?

javascript - Socket IO 发出事件两次