私は JavaScript を学び始めました。何が起こっているのかよくわからないまま何年も JavaScript を使っていたので、それについて何かをする時が来たと判断しました。さらに、JavaScript を使用してアプリケーションのスクリプトを作成できるプロジェクトに取り組んでいます。
それで、やだやだはもう十分です。私の問題はプロトタイプの継承に関連しています。今ではそれがどのように機能するかはわかっていると思いますが、問題があるかもしれません。基本的なアイデアは、すべてのオブジェクト (まあ、すべてのオブジェクトではありません ;-)) にはプロトタイプがあり、実際のオブジェクトがプロトタイプチェーンの最後に到達するまですべてのリクエストを処理できない場合は、すべてのリクエストが委任されます (オブジェクトもプロトタイプを持つことができますよね?)。
私のアプリケーションでは、大規模なフィルタリングが発生する予定であり、ユーザー (あまり技術的ではないため、できるだけ簡単にする必要があります) に、追加の呼び出しごとに結果セットを絞り込む単純なフィルター コマンドをチェーンする方法を提供したいと考えています。どういう意味ですか?スムーズ。このような:
zoo.getAnimals().getAnimalsWithFurColor("red").getMammals()
zoo
は常にスコープ内にあり、動物園の動物と追加のプロパティを含むオブジェクトです。Container
したがって、この例のすべてのメソッド呼び出しで返されるオブジェクトを次のようにします (これを呼び出します)。
{
data: [harryTheElephant, sallyThePenguin, timTheWoodpecker],
someFilterMethod: function() {
return new Container(data.filter(function(animal) {
return animal.someProperty == someValue;
});
}
}
ここまでは順調ですね。しかし、Zoo も入れ物にしたいのです。これが私の本当の質問の出番です。動物園は動物の開始セットを取得するために非常に高価なことをしなければならないので、それらを遅延ロードしたいと思います。動物園がgetAnimals()
リクエストを受け取ると、データが取得されます。
私のアイデアは、Zoo のプロトタイプを、Zoo からデータを取得するコンテナに設定することでした。getAnimals()
しかし、プロトタイプ (コンテナー) から動物園のメソッドにアクセスする方法が見つかりません。で試してみましたthis
が、方法が見つかりません。
私がやりたいことをするコードを書く方法はありますか? 私はブラウザ環境にいないことに注意してください。アプリケーションに JavaScript (1.7) を埋め込みます。
ありがとう!