2016-09-30 13 views
1

ビューモデルのプロトタイプで計算されたプロパティを定義することはできますか?私が言う限りでは、宣言時に適切なthis値にアクセスする方法はありません。Durandalで計算されたプロトタイプメソッド

私はそれをコンストラクタ内に置くことができますが、それはあなたが知っているように各インスタンスに対して再定義されます。ですから、これは単にパフォーマンスの問題です。私の見解モデルの

マイAMDモジュール:

function viewModel(){ 
    // this.someComputed works 
} 

viewModel.prototype.someComputed = ko.pureComputed(function(){ 

}/*, no context yet..? */); 

viewModel.prototype.activate = function(){ 
    // 'this' is an instance of the view model (I presume) 
    // should I attach it here? 
}; 

return viewModel; 
+0

Thidには、実際にDurandal自体と関係がないのですか? –

+0

@ T.J.Crowder私はDurandalの 'activate'メソッドを使って関数インスタンスを' this'を通して公開することができるので、私はそれについて言及したいと思います。私が考える答えは、コンストラクタ内に関数を宣言しても、現代のブラウザではプロトタイプに追加しないということです。 – Johan

+1

いいえ、彼らはしません(できません)。しかし、彼らがやっていることは、複数の関数オブジェクトにわたって同じ基本関数コードを再利用することです。実際には、計算されたものとオブジェクト(コードが結びつく関数オブジェクト)の単なるコストです。あまりにも悪くない、オブジェクトはかなり安いです。 –

答えて

2

それは私のビューモデルのプロトタイプに計算されたプロパティを定義することは可能ですか?私が言う限りでは、宣言時に適切なthis値にアクセスする方法はありません。

正しい。答えはいいえ、プロトタイプメソッドでは計算を使用できません。

関連する問題