JavaScript特有のcallメソッドについてです。
一言で言うと、
「自分の持っていない関数を使用するための関数です」
自分の持っていない関数とは、他のオブジェクトが持っている関数を示しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//Sampleオブジェクト function Sample(){ this.say=function(){ console.log("Hello " + this.name); } } //Sampleのインスタンス var sample = new Sample(); sample.name="John"; sample.say(); //Hello John //何も関数を持っていないオブジェクト var call_obj = { name:"Mike" }; //callを使用して他オブジェクトの関数を使用する sample.say.call(call_obj); //Hello Mike |
Google ChromeのDevelopper Toolで確認してみると、以下のように表示されます。
「call_obj」がSampleオブジェクトが持っているsay()関数を使用していることがわかります。
callを使用するためには、使用したいオブジェクトのインスタンスが生成されていることが条件となります。