2013-07-22 6 views
6

Soweit ich weiß Zuweisung this zu einer Variablen wird innerhalb von Rückrufen verwendet, wo der this Bereich ändern kann. Aber durch die ExtJS-Quelle zu graben, fand ich, dass sie in allen möglichen Funktionen verwendet wurde, aber nicht immer. Gibt es also einen Grund, dass ich this einer lokalen Variablen unterhalb des Bereichs zuweisen würde oder ist die ExtJS-Quelle nur mit verschiedenen Entwicklerstilen zu kämpfen?Aus welchem ​​Grund wird dies einer Gebietsschemavariablen ohne Rückruf zugewiesen?

Antwort

2

Es gibt ein paar Gründe dafür, das wichtigste ist, dass die Verwendung einer lokalen Variablen einige Bytes beim Komprimieren der Dateien speichert. Es scheint nicht viel für ein wenig Code zu sein, aber es kann sich im Laufe der Zeit gut addieren.

Es gibt einen langen Thread in den Sencha Foren, die über dieses Problem sprechen: http://www.sencha.com/forum/showthread.php?132045.

+0

Vielen Dank, Sie haben mich auf die richtige Richtung so akzeptiert und +1. Jedenfalls fühlte ich mich gezwungen, eine komplexere Antwort zu schreiben und fügte dies meiner eigenen Frage hinzu. – JJR

0

Wie Sie richtig gesagt haben, wird this manchmal an Orten verwendet, wo sich der Umfang ändern könnte.

Es gibt Fälle, in denen Sie dasselbe tun möchten, um sicherzustellen, dass keine Probleme mit der Bereichsdefinition auftreten.

Abgesehen davon, die Entwickler manchmal nur this zu einer Variable aus Gewohnheit mehr als aus Notwendigkeit zuweisen.

3

@kevhender wies mich auf die richtige sencha forum thread wo evan hat eine sehr gute Erklärung gegeben.

Es ist nur für die Größe. Und hier ist ein Beispiel:

function doA() { 
    var me = this; 

    me.a(); 
    me.b(); 
    me.c(); 
    me.d(); 
    me.e(); 
    me.f(); 
    me.g(); 
    me.h(); 
    me.i(); 
    me.j(); 
    me.k(); 
    me.l(); 
} 

function doB() { 
    this.a(); 
    this.b(); 
    this.c(); 
    this.d(); 
    this.e(); 
    this.f(); 
    this.g(); 
    this.h(); 
    this.i(); 
    this.j(); 
    this.k(); 
    this.l(); 
} 

Komprimierte erhalten wir:

function doA(){var a=this;a.a();a.b();a.c();a.d();a.e();a.f();a.g();a.h();a.i();a.j();a.k();a.l()} 
function doB(){this.a();this.b();this.c();this.d();this.e();this.f();this.g();this.h();this.i();this.j();this.k();this.l()}; 

Es summiert sich.


sich demnach sollten wir

  • NICHT eine lokale var verwenden, wenn wir diese verwenden nur bis zu dreimal

    function doA(){var a=this;a.a();a.b();a.c();}; 
    function doB(){this.a();this.b();this.c();}; 
    
  • und es verwenden, wenn wir Verwenden Sie dies häufiger als dreimal

    function doA(){var a=this;a.a();a.b();a.c();a.d()}; 
    function doB(){this.a();this.b();this.c();this.d()};