JavaScript で private を扱う
なんか妙なタイトルだが、要は隠蔽されたメンバを利用するってこった。
JavaScript は public や private といったキーワード(?)がない*1ため、全てのメンバが自動的に公開されているものと考えていた。実は、どうやら private なプロパティとメソッドを作成できるらしい。
やり方はこうだ。
function ObjectWidthPrivateMembers()
{
var privatePropaty = "private member";
var PrivateMethod = function() {return "private member";}
this.publicPropaty = "public member";
this.PublicMethod = function() {return "return ["+privatePropaty+"]";}
}
obj = new ObjectWidthPrivateMembers();
alert(obj.privatePropaty);
alert(obj.PrivateMethod); // 未定義のまま使用するとエラーになるので
alert(obj.publicPropaty);
alert(obj.PublicMethod());
おいおいそれ変数じゃねぇか。
しかしなるほど、たしかにこれは private なメンバと考えて差し支えない動作をする。つまり外からはアクセスできないのだ。また値は保存されるから、局所変数として破棄されもしない。
こういう使い方があったのかあ。
参考→Collection & Copy - JavaScriptにおけるプライベートメンバ