2011-06-19 7 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の関数を呼び出すしようとすると:JavaScriptで

Error: uninstallLocalHost is not defined 

答えて

3

thisは次のとおりです。

oncommand="katimbaClass.toggleInstall()" 

を次のエラーの結果が、なぜ私は理解していません暗黙ではない。これらに

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 Scoping and this」を検索してください。 – Gaz

2

これは、それが簡単になりますか?

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

} 


oncommand="katimbaClass.toggleInstall()" 
関連する問題