2011-06-19 75 views
0

我是JavaScript的新手,我試圖編寫一個調用幾個成員函數的簡單對象。JavaScript抱怨我已經定義了一個函數

令人驚訝的是,JavaScript抱怨稱爲uninstallLocalHost的函數。

Error: uninstallLocalHost is not defined 
Source File: chrome://custombutton/content/button.js 
Line: 39 

然而,它看起來像這樣功能定義。 我能做什麼錯?

var katimbaClass= 
{  
    installLocalHost:function() 
    { 
     alert("localhost installed"); 
    }, 

    uninstallLocalHost:function() 
    { 
     alert("localhost uninstalled"); 
    }, 

    toggleInstall:function() 
    { 
     if(bInstalled) uninstallLocalHost(); 
     else installLocalHost(); 
    }, 

    bInstalled: false 
}; 

當我嘗試在其他地方調用katimbaClass功能,像這樣:

oncommand="katimbaClass.toggleInstall()" 

我不明白,爲什麼下面的錯誤結果:

Error: uninstallLocalHost is not defined 

回答

3

在JavaScript中,this是不隱含。您必須更改這些行:

if(bInstalled) uninstallLocalHost(); 
else installLocalHost(); 

對於這些:

if(this.bInstalled) this.uninstallLocalHost(); 
else this.installLocalHost(); 

...或者,這些:

if(katimbaClass.bInstalled) katimbaClass.uninstallLocalHost(); 
else katimbaClass.installLocalHost(); 
+0

謝謝。但是真的很奇怪,「這個」並不是顯式的 –

+0

@Dr Deo:你的意思不是隱含的?它是明確的。 – icktoofay

+1

Javascript有時可能看起來像一種'奇怪'的語言:-)另外,請搜索Google'Javascript範圍和這個'。 – Gaz

2

請問這樣可以更容易?

var katimbaClass = new function() { 
    this.installLocalHost= function() { 
     alert("localhost installed");  
    }; 
    this.uninstallLocalHost= function() { 
     alert("localhost UnInstalled");  
    }; 
    // ETC .. 

} 


oncommand="katimbaClass.toggleInstall()" 
相關問題