2017-01-21 4 views
2

私はF2キーを押してのIntelliJ IDEAでdestroy()のようなjavascript関数の定義を探している場合: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

'myTable'は' dataTable'の 'destroy'を呼び出すでしょう。 –

+0

@ Sushanth--そして、私はどのようにしてMyTableが本当にDataTableのリファレンスであることをプログラムでテストできますか? (Javaでは、 'instanceOf'のようなものがあります) – user2145488

+0

' instanceof'演算子を使って、作成されたオブジェクトが期待されるコンストラクタのものかどうかを調べることができます。 'console.log(myTable instance of dataTable)' –

答えて

2

あなたのオブジェクトがどのタイプであるのか自分自身に尋ねると、答えが出ます。 1行目で$( '#myList').dataTable()をvarに代入するので、varはdataTableオブジェクトのプロパティ(関数プロパティを含む)を継承します。ですから、あなたが今myTable.destroy()を実行すると、これはdataTable#destroy(そこのリストの3番目のもの)を使用します。

これはprototypal inheritanceの機能の一例です。

EDIT:「どのようにして自分のオブジェクトがどのようなタイプであるかを確認するにはどうすればよいですか」という質問にさらに続きます...それは本当に「あなたができない」ということです。 Javascriptは静的に型付けされた言語ではありません。かなり可愛いです。AWESOMEものです。しかし興味があれば、TypeScriptを参照してください。

関連する問題