<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function Peon(number) {
this.number = number;
this.inc = function() {
number=number+1;
};
return true;
}
var p=new Peon(10);
function returnNumber() {
p.inc();
alert(p.number);
}
</SCRIPT>
</HEAD>
<BODY>
<INPUT id="b00" TYPE="button" Value="Click" onClick="returnNumber()">
</BODY>
</HTML>
此代码未按预期工作。有没有办法让它工作而无需编写
this.number=this.number+1;
这里这是一个微不足道的选择,但在更大的代码中,没有 this.* 会使其更具可读性。可能吗?
最佳答案
您可以将number
设置为“私有(private)”,但是您需要一个getter:
function Peon(number) {
var number = number;
// increment
this.inc = function() {
number++;
};
// a simple getter
this.getNumber = function() {
return number;
}
}
var p = new Peon(10);
p.inc();
alert(p.getNumber());
您应该阅读 Douglas Crockfords 的“The Good Parts”,了解有关如何使用此模式的更多信息,Google Books 提供(有限)预览。 .
此外,您不需要从构造函数返回某些内容,您的 return true
是多余的。
关于javascript - 在没有 "this"的情况下访问 JavaScript 中对象中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4258863/