[解決済み] プロトタイプ定義関数からプライベートメンバー変数にアクセスする
2022-04-23 18:16:34
質問
コンストラクタで定義された「プライベート」変数を、プロトタイプで定義されたメソッドで使用できるようにする方法はありますか?
TestClass = function(){
var privateField = "hello";
this.nonProtoHello = function(){alert(privateField)};
};
TestClass.prototype.prototypeHello = function(){alert(privateField)};
これは有効です。
t.nonProtoHello()
しかし、これでは
t.prototypeHello()
私はこれまでコンストラクタの内部でメソッドを定義してきましたが、いくつかの理由から、この方法から脱却しつつあります。
どのように解決するのか?
いいえ、そんな方法はありません。 それは本質的にスコープを逆にしていることになります。
コンストラクタの内部で定義されたメソッドは、プライベート変数にアクセスすることができます。
プロトタイプ上で定義されたメソッドは、コンストラクタのスコープ内で定義されていないため、コンストラクタのローカル変数にアクセスすることはできません。
プライベート変数を持つことはできますが、プロトタイプ上で定義されたメソッドにアクセスさせたい場合は、ゲッターとセッターを
this
オブジェクトを作成し、プロトタイプのメソッドは (他のすべてと一緒に)
は
にアクセスすることができます。例えば
function Person(name, secret) {
// public
this.name = name;
// private
var secret = secret;
// public methods have access to private members
this.setSecret = function(s) {
secret = s;
}
this.getSecret = function() {
return secret;
}
}
// Must use getters/setters
Person.prototype.spillSecret = function() { alert(this.getSecret()); };
関連
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR
-
[解決済み] 内蔵DOMメソッドやPrototypeを使ってHTML文字列から新しいDOM要素を作成する
-
[解決済み】プロパティ名やメソッド名のアンダースコア接頭辞は単なる慣例?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
親子コンポーネント通信を解決する3つのVueスロット
-
Vueの要素ツリーコントロールに破線を追加する説明
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
Vueでルートネスティングを実装する例
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】「X-Frame-Options」を「SAMEORIGIN」に設定したため、フレームでの表示を拒否された。
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?