パブリック メソッドを持つ JavaScript クラスを作成するには、次のようにします。
function Restaurant() {}
Restaurant.prototype.buy_food = function(){
// something here
}
Restaurant.prototype.use_restroom = function(){
// something here
}
そうすれば、私のクラスのユーザーは次のことが可能になります。
var restaurant = new Restaurant();
restaurant.buy_food();
restaurant.use_restroom();
buy_food
メソッドとuse_restroom
メソッドによって呼び出すことができるが、クラスのユーザーによって外部から呼び出すことができないプライベート メソッドを作成するにはどうすればよいですか?
言い換えれば、メソッド実装で次のことができるようにしたいのです。
Restaurant.prototype.use_restroom = function() {
this.private_stuff();
}
しかし、これは機能しないはずです:
var r = new Restaurant();
r.private_stuff();
private_stuff
これら両方が当てはまるようにプライベート メソッドとして定義するにはどうすればよいでしょうか?
もう読んだダグ・クロックフォードの記述何度か試しましたが、「プライベート」メソッドをパブリックメソッドから呼び出したり、「特権」メソッドを外部から呼び出したりすることはできないようです。
ベストアンサー1
可能ですが、プロトタイプの一部にすることができないという欠点があります。
function Restaurant() {
var myPrivateVar;
var private_stuff = function() { // Only visible inside Restaurant()
myPrivateVar = "I can set this here!";
}
this.use_restroom = function() { // use_restroom is visible to all
private_stuff();
}
this.buy_food = function() { // buy_food is visible to all
private_stuff();
}
}