【问题标题】:call javascript object method from html从 html 调用 javascript 对象方法
【发布时间】:2013-03-01 16:04:03
【问题描述】:

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

index.html:

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

弗雷德.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() 的调用无效。

【问题讨论】:

    标签: javascript html object


    【解决方案1】:

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

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

    如需更深入地解释 javaScript 中的闭包,请尝试以下链接:http://www.sitepoint.com/javascript-closures-demystified/

    【讨论】:

    • 谢谢,我想我可以做到,但我想了解原因。还解释了为什么我可以从对象内调用两者。感谢关于闭包的指针。
    【解决方案2】:

    您没有为 foo 分配 function pointer。改成

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

    就像你所做的那样:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-22
      • 2015-02-12
      • 1970-01-01
      • 2016-02-11
      • 2015-11-25
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多