javascript - 从 html 调用 javascript 对象方法

标签 javascript html object

我对 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() 的调用无效。

最佳答案

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

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

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

关于javascript - 从 html 调用 javascript 对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15161862/

相关文章:

javascript - 如何解决 AWS Cognito 开发工具包错误 : "Client <XYZ> is configured for secret but secret was not received?"

html - 使用 CSS,如何在鼠标悬停在元素上时创建更大的元素?

javascript - 如何检查身份不明的弹出窗口上的元素?

java - 在 Java 中构造对象

java - JSON 到 Java 对象而不创建类(PHP 方式)

javascript - 这些代码有什么区别?

javascript - 使用 'rows' 模块中的 Highcharts 'data' 属性

javascript - 对键值对匹配的嵌套对象中的值求和

javascript - 为什么当我在地址栏中输入新搜索时 Chrome 会更改 tabId,然后它将我导航到谷歌页面结果

jquery - 固定菜单在 WOW slider 下