2

在 Mootools 中,以下模式经常出现:

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

例如:

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

我了解多次分配导致function同时分配给xthis.x。但我认为在全局范围内x是隐式的this.x,所以看起来是多余的。这是一种优化技术,还是这种模式有其他目的?

4

2 回答 2

0

仅当此代码未在函数中执行时,这才是多余的。

如果它在函数中,则 var 是本地的,即使上下文 ( this) 是全局的。

看这个 :

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

如果您希望能够x直接使用 ina和 have this.xin b,那么您需要双重分配:

 var x = this.x = 1;

当我有一个经常使用的变量并且我更喜欢不使用this..

于 2013-03-13T15:26:56.110 回答
0

var x 不等于 this.x,var x 是 js 类的私有变量,this.x 是公共属性,因此代码创建了两种调用函数的方式这里举个例子:

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 回答