2011-06-19 42 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()" 
相关问题