从html调用javascript对象方法

时间:2013-03-01 16:04:03

标签: javascript html object

我对Javascript编程比较陌生。我正在研究一个例子,我很难从HTML调用对象的方法。我怀疑这与方法的范围或外部化有关,但我不确定。

的index.html:

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

Fred.js:

function Fred() {
this.a = 1;

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

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

this.c = 3;
this.d = 4;

}

bar()的调用有效,对foo()的调用不起作用。

2 个答案:

答案 0 :(得分:2)

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

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

有关javaScript中闭包的更深入说明,请尝试以下链接:http://www.sitepoint.com/javascript-closures-demystified/

答案 1 :(得分:1)

你没有为foo分配function pointer。将其更改为

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

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