2016-03-23 16 views
2

私は他の開発者と一緒にAureliaプロジェクトに取り組んでいます。コンテキスト変数の代わりにこれをjavascriptで使用することに問題がありますか?

一部はです。といくつかはコンテキスト変数を宣言しています

パフォーマンスの違い、メモリ割り当て、またはJavascriptでの使用の標準が使用されているかどうかは疑問でした。


この有する例:この無し

activate() { 
      this.isLoading = true; 
      this.modeText = "Edit"; 
      this.service.getX(this.appState.StoreId,this.variableX).then(response => { 
       let stuff = JSON.parse(response.response); 
       this.widget = stuff; 
       this.isLoading = false; 
      }); 
} 

例:薄い機能またはネスト関数の低レベル(スコープチェーン)と基本的に

activate() {  
      var context = this; 
      context.isLoading = true; 
      context.modeText = "Edit"; 
      context.service.getX(context.appState.StoreId,context.variableX).then(response => { 
       let stuff = JSON.parse(response.response); 
       context.widget = stuff; 
       context.isLoading = false; 
      }); 
} 
+0

どちらも少し違います。 'context'は常に同じですが、最初の例では' this'は '.then'関数の中で異なります。 'context'を定義して' apply() 'や' call() 'を使う必要がないと思っています。 –

+1

@MattLishman:'関数 '(){}'を ' '関数ですが、矢印関数(これは' this 'をレキシカルスコープにバインドしています)を使用しているので、同じことになります。だから私はこれらの特定の例では、機能に大きな違いはないと思います。あなたの推論は正しかったですが、一般的に、私が 'context'変数を見たとき、コールバックで正しい' this'値がアクセスできるようになりました。 –

+0

申し訳ありませんが、それを逃した。 '=>'は私の画面から少し離れていました。私を無視。 –

答えて

0

違いはありません。しかし、アプリケーションが大きくなるにつれてパフォーマンスが低下するのを避けるため、contextの使用をお勧めします。可能であれば、第2章高性能Javascript、N.Zakasを読んでください。ここでは完全に説明されており、パフォーマンスグラフが添付されています。