从html调用javascript对象方法

从html调用javascript对象方法,javascript,html,object,Javascript,Html,Object,我对Javascript编程比较陌生。我正在编写一个示例,在从HTML调用对象的方法时遇到困难。我怀疑这和方法的范围界定或外部化有关,但我不确定 index.html: <script type="text/javascript"> var f = new Fred(); f.bar(); f.foo(); </script> } 对bar()的调用有效,对foo()的调用无效。您没有为foo分配一个。换成 this.foo = function() { if

我对Javascript编程比较陌生。我正在编写一个示例,在从HTML调用对象的方法时遇到困难。我怀疑这和方法的范围界定或外部化有关,但我不确定

index.html:

<script type="text/javascript">
var f = new Fred();
f.bar();
f.foo();
</script>
}

bar()
的调用有效,对
foo()
的调用无效。

您没有为foo分配一个。换成

this.foo = function() {
    if (a == 1) {
        a++;
    } 
    var e = 0;
};
就像你做的那样:

this.bar = function () {
    var a = 3;
    var b = 4;
};

是的,你是对的,这确实与范围界定和闭包的概念有关。如果您熟悉Java或C等其他面向对象语言,那么可以将
foo()
函数视为“私有”方法。它仅在
Fred()
对象的范围内可用。
bar()
函数是“public”的,因为用this.bar声明它会将它添加到
Fred()
对象的公共可用属性中。因此,要将
foo()
也设为“public”,则将其声明为:

this.foo = function () {
    if (a == 1) {
        a++;
    } 
    var e = 0;
}

要更深入地解释javaScript中的闭包,请尝试以下链接:

谢谢,我想我可以这样做,但我想了解原因。还解释了为什么我可以从对象内部调用这两个函数。谢谢你的闭包指针。
this.foo = function () {
    if (a == 1) {
        a++;
    } 
    var e = 0;
}