<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"を除いたJavaScriptのオブジェクト変数へのアクセス
this.number=this.number+1;
を記述することなく動作させるためにそこの方法は、ここでは簡単な選択であるが、より大きなコードでこれを持っていません。*それはたくさん読みやすくなります。出来ますか?
クロフォードのプライベートメンバーパターンについては、彼のウェブサイトで読むことができます:http://javascript.crockford.com/private.html **個々のオブジェクトが両方の関数の*独自のコピー*を持つため、多くのPeonsを使用する場合、このプライベートメンバーパターンはプロパティを使用するよりも大幅に多くのメモリを消費することに注意することは非常に重要です**コンストラクタ内で定義されます。それらはオブジェクト間で共有されることはありません。したがって、プライバシーとメモリの使用のトレードオフがあります。メモリ消費はIEとFirefoxの大きな問題です。少数のPeonsしか持たないなら、それは問題ではありません。 –
ありがとう、これは私が探していたものです –
'return true'は実際には余分であり、コンストラクタの最後では無視されますが、プリミティブではなくオブジェクトを返すことは無視されず、 Peon'オブジェクト。 –