[解決済み] JavaScriptのプライベートメソッド
2022-03-19 09:09:14
質問
公開メソッドを持つ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
をプライベートメソッドとして使用することで、これらの両方が正しく機能するようになりますか?
を読みました。 Doug Crockfordの記事 を何度か試してみましたが、private"メソッドをpublicメソッドから呼び出したり、"privileged"メソッドを外部から呼び出すことはできないようですね。
どのように解決するのですか?
できますが、プロトタイプの一部にはできないのが難点です。
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();
}
}
関連
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
Vueのフィルタの説明
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
vueの補間表現とv-textディレクティブの違いについて
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
JavaScriptのgetElementById()メソッド入門
-
[解決済み] JavaScriptで「var that = this;」とはどういう意味ですか?
-
[解決済み] TraceurでES6クラスのプライベートメソッドを実装する方法【重複あり