2012-08-07 30 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();​