Dependency Injection(依存性の注入)とは関数(コンストラクターを含む)にオブジェクトを渡すことです。
関数の中にオブジェクトを生成するとその関数は生成したオブジェクトに依存してしまい、大規模なプロジェクトの場合コンポーネントごとにテストを行う時などに不都合が起こる可能性があります。
このような問題は、functionの引数としてオブジェクトを渡すことで解決することができます。
そしてこのような方法のことをDependency Injection(依存性の注入)と呼んでいます。
話をわかりやすくするために、極端に簡単なサンプルを見てみましょう。
この例はAnimalオブジェクトを作成しておいて、関数の中でnewしています。
logAnimal()はAnimalオブジェクトに依存しています。
デモ*consoleでAnimalオブジェクトの表示を確認します。
var Animal = function (name,call){ this.name = name; this.call = call; } function logAnimal(){ var tiger = new Animal('Tiger','Roar!'); console.log(tiger); } logAnimal();
logAnimal()はAnimal(‘Tiger’,’Roar!’)に依存していますので、あまり使い勝手がよくありません。
従って以下のように引数を活用して記述します。
デモ*consoleでAnimalオブジェクトの表示を確認します。
var Animal = function (name,call){ this.name = name; this.call = call; } function logAnimal(animal){ console.log(animal); } var tiger = new Animal('Tiger','Roar!'); logAnimal(tiger);
これが依存性の注入になります。
Dependency Injection(依存性の注入)はAngularJSで活用される手法になりますのでAngularJSを学習する前に知っておくと良いでしょう。