我对 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/