2

Mootools では、次のパターンが頻繁に発生します。

var x = this.x = function(){}

例えば:

var typeOf = this.typeOf = function(item){ ...  

function複数の割り当ての結果、と の両方に割り当てられることxを理解していthis.xます。xしかし、グローバルスコープは暗黙的に であると思ったthis.xので、冗長に思えます。これは最適化手法ですか、それともこのパターンには別の目的がありますか?

4

2 に答える 2

0

これは、このコードが関数で実行されない場合にのみ冗長です。

関数内にある場合、コンテキスト ( this) がグローバルなものであっても、var はローカルです。

これを見てください:

function a() {
   var x = 1;
   console.log(x)
}
function b() {
   console.log(x); // fails
}
a();
b();

x直接 inathis.xinの両方を使用できるようにしたい場合bは、二重代入が必要です。

 var x = this.x = 1;

私はよく使用する変数があり、 を使用せずに直接アクセスしたい場合に、大きな関数でこのパターンを頻繁に使用しますthis.

于 2013-03-13T15:26:56.110 に答える
0

var x は this.x と等しくなく、var x は js クラスの変数プライベートであり、this.x はパブリック プロパティであるため、コードは関数を呼び出すための 2 つの方法を作成します。ここに例を示します。

function exampleA() {
   this.x = 1;
   var x = 2;
   this.show = function () {
    alert("A.x:" + x);
    alert("A.this.x:" + this.x);
   };
}
function exampleB() {
   var x = this.x = 1;
   this.x   +=1; 
   this.show = function () {
    alert("B.x:" + x);
    alert("B.this.x:" + this.x);
   };
}
$(document).ready(

function () {
    var example1 = new exampleA();
    example1.show();
    var example1 = new exampleB();
    example1.show();
});
于 2013-03-13T15:27:19.387 に答える