Differenza tra var e questo nelle funzioni Javascript?

var tools = {}; tools.triangle = function() { var originX = 0; var originY = 0; } 

 var tools = {}; tools.triangle = function() { this.originX = 0; this.originY = 0; } 

Ci sono delle differenze tra questi due blocchi di codice? Scusate se questo è stato già chiesto precedentemente.

var crea una variabile locale all’interno di tools.triangle . Le variabili originX e originY non possono essere interagite con outside di tools.triangle . this è un puntatore all’object corrente con cui hai a che fare. Il secondo esempio può essere usato per dare proprietà a un object facendo new tools.triangle(); . Se non si utilizza new e basta usare tools.triangle(); , this punterà l’object globale che è l’object window . È ansible modificare l’object a cui this punto utilizzando i metodi function call(); e apply(); come questo:

 var myObj = {}; tools.triangle.call( myObj ); // "this" in tools.triangle now points to myObj // myObj now has the properties originX and originY 

È importante sapere che this può fare riferimento a qualsiasi object, oltre a essere indefinito o null nella modalità rigorosa ES5.

Puoi trovare maggiori informazioni qui .

Nel primo esempio, X e Y esistono entrambi come variabili locali per la chiusura salvata nel triangle variabile.

Nel secondo esempio, X e Y esistono come variabili dell’object tools.triangle causa dell’uso di this .