从html调用javascript对象方法
我对Javascript编程比较陌生。我正在编写一个示例,在从HTML调用对象的方法时遇到困难。我怀疑这和方法的范围界定或外部化有关,但我不确定 index.html:从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
<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;
}