バインディング・コンテキスト
		バインディング・コンテキストは、バインディングから参照できるデータをもつオブジェクトです。
		バインディングの適用にあたって、Knockout は自動的にバインディング・コンテキストの階層を作成・管理します。
		階層のルートは、ko.applyBindings(viewModel) に渡した viewModel です。
		また、with や foreach などのフロー制御バインディングを使う度に、
		ネストされた ViewModel データを参照する子コンテキストが作成されます。
	
バインディング・コンテキストはどのバインディングでも参照できる、次の特別な変数を提供します。
- 
			$parent親コンテキストの ViewModel オブジェクトであり、現コンテキストの一つ外側にあたります。 ルートコンテキストでは undefinedです。<h1 data-bind="text: name"></h1> <div data-bind="with: manager"> <!-- ネストされたバインディング・コンテキスト内部 --> <span data-bind="text: name"></span> は <span data-bind="text: $parent.name"></span> のマネージャーです。 </div> 
- 
			$parentsすべての親 ViewModel の配列で、次のようになっています。 $parents[0]...親のコンテキストの ViewModel ($parentと同じ)$parents[1]...親の親のコンテキストの ViewModel$parents[2]...親の親の親のコンテキストの ViewModel...ルートコンテキストの ViewModel まで続く 
- 
			$rootルートコンテキストにあたるメインの ViewModel であり、最上位のコンテキストです。 
 $parents[$parents.length - 1]と同義です。
- 
			$data現在のコンテキストの ViewModel です。 ルートコンテキストに限り、 $dataと$rootは同義です。$dataは、次の例のように ViewModel のプロパティではなく ViewModel 自体を参照したいときに便利です。<ul data-bind="foreach: ['cats', 'dogs', 'fish']"> <li>値は <span data-bind="text: $data"></span> です</li> </ul> 
- 
			$index(foreachバインディング内でのみ使用可能)foreachバインディングによってレンダリングされる、配列の現在の要素のインデックスです。 他のコンテキスト変数と違って$indexは Observable であり、 配列へのアイテム追加・削除などによるアイテムのインデックスの変動により更新されます。
- 
			$parentContext親の階層のバインディング・コンテキスト・オブジェクトを指します。 これは、親の階層の ViewModel を指す $parentとは異なります。 例えば、外側のforeachのアイテムのインデックスに、 内側のコンテキストからアクセスするときに便利です。 (使い方:$parentContext.$index)
 ルートコンテキストではundefinedです。
次の特別な変数もバインディングに使用できますが、バインディング・コンテキスト・オブジェクトのプロパティではありません。
- 
			$context現在のバインディング・コンテキスト・オブジェクトを指します。 ViewModel にコンテキスト変数と同名のプロパティがある場合に、 コンテキスト変数にアクセスするために使うことができます。 また、コンテキスト・オブジェクトを引数に関数を呼び出す、という場面があるかもしれません。 <ul data-bind="foreach: items"> <li> 名前: <span data-bind="text: name"> </span> ViewModelの $index: <span data-bind="text: $index"> </span> コンテキストの $index: <span data-bind="text: $context.$index"> </span> コンテキストを解析: <div data-bind="html: analyzeContext($context)"></div> </li> </ul> <script> ko.applyBindings({ items: ko.observableArray([ { name: "A", $index: 10 }, { name: "B", $index: 20 }, { name: "B", $index: 30 } ]) }); </script>
- 
			$element現在のバインディングにおける、エレメントの DOM オブジェクト (バーチャルエレメントの場合はコメントの DOM オブジェクト) です。 次の例のように、現在のエレメントの属性にアクセスする必要があるときに便利です。 <div id="item1" data-bind="text: $element.id"></div> 
カスタムバインディングでバインディング・コンテキストを制御・加工する
		ビルトインバインディングの with や foreach のように、
		カスタムバインディングで配下のエレメントのバインディングコンテキストを変更、
		またはバインディング・コンテキスト・オブジェクトを拡張して特別な変数を追加することができます。
		これについては、
		配下のバインディングを制御するカスタムバインディングを作成する
		にて詳しく説明します。