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

时间:2017-01-21 01:32:45

标签: 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 个答案:

答案 0 :(得分:1)

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

这是prototypal inheritance功能的一个示例。

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