2012-08-07 28 views
0

为什么不能正常工作?面向对象的JavaScript共享方法变量

function thing() { 

    var bigvar; 

    function method1() { 
     bigvar = 1; 
    } 

    function method2() { 
     alert(bigvar); 
    } 

    this.method1 = method1; 
} 

var a = new thing(); 
a.method1(); 
a.method2(); 
​ 

我想方法2的工作,但它不..有没有办法使这项工作?

回答

3

你没有让method2公开像method1是。

this.method1 = method1; 
this.method2 = method2; //<-- missing this 
+0

要严格,method1不公开,它只是宣布为一个赋值给本地(或全局,取决于实现)的函数,它随意地具有“相同”的名称。 – shabunc 2012-08-07 16:44:27

0

为什么你有this.method1 = method1但不this.method2 = method2?试试看。

0

为什么不这样做?

function thing() { 

    var bigvar; 

    this.method1 = function() { 
     bigvar = 1; 
    } 

    this.method2 = function() { 
     alert(bigvar); 
    } 

} 

var a = new thing(); 
a.method1(); 
a.method2();​