如果我通过按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)
如何强制使用想要的功能?
答案 0 :(得分:1)
好吧,问问自己你的对象是什么类型,你会得到答案。在第1行,您将$('#myList')。dataTable()分配给您的var,所以现在您的var继承了dataTable对象的属性(包括函数属性)。因此,当你现在执行myTable.destroy()时,这将使用dataTable#destroy(列表中的第3个)。
这是prototypal inheritance功能的一个示例。
编辑:关于“我怎样才能确定我的对象是什么类型”的问题... ...缺少它真的是“你不能”,无论如何都不可靠。 Javascript根本不是一种静态类型的语言..它允许一些漂亮的非常好的的东西。但是,如果您有兴趣,请查看TypeScript