[解決済み】プロパティ名やメソッド名のアンダースコア接頭辞は単なる慣例?
質問
JavaScriptのアンダースコアのプレフィックスは、例えばPythonのプライベートクラスのメソッドのように、単なる慣習なのでしょうか?
Python 2.7 のドキュメントより。
「プライベート」インスタンス変数で 内部からでないとアクセスできない オブジェクトはPythonには存在しません。 しかし、以下のような慣例があります。 ほとんどのPythonのコードでは、名前 の前にアンダースコアをつけたもの(例. など) は、API の非公開部分として扱われるべきです。 関数、メソッド、データ メンバ)。
これは、JavaScriptにも適用されるのでしょうか?
たとえば、こんなJavaScriptのコードがあります。
function AltTabPopup() {
this._init();
}
AltTabPopup.prototype = {
_init : function() {
...
}
}
また、アンダースコア接頭辞付きの変数が使用されます。
...
this._currentApp = 0;
this._currentWindow = -1;
this._thumbnailTimeoutId = 0;
this._motionTimeoutId = 0;
...
規約だけ?それとも、アンダースコアのプレフィクスには何か裏があるのでしょうか?
私の質問は、以下のものとよく似ています。 この質問 しかし、JavaScriptにおけるアンダースコアの接頭辞の意味について、より賢くなることはありませんでした。
解決方法は?
2019年、ようこそ!
が表示されます。
提案
を可能にするために、クラス構文を拡張する。
#
という接頭辞付きの変数をプライベート変数にすることが承認されました。クローム 74
船舶
に対応しました。
_
接頭辞付きの変数名は、慣習上プライベートとみなされますが、パブリックであることに変わりはありません。
この構文は、他のプログラミング言語とはかなり異なりますが、簡潔かつ直感的であることを心がけています。
数あるユニコードコードポイントの中で、なぜ#という記号が選ばれたのでしょうか?
- は当初のお気に入りだったが、デコレーターに取られてしまった。TC39では、デコレーターとプライベートステートのシグルを交換することも検討されましたが、委員会はトランスパイラーユーザーの既存の使い方に委ねることにしました。
- は、既存のJavaScriptコードとの互換性の問題を引き起こし、長い間、識別子や(パブリック)プロパティ名の先頭に_をつけることを許してきました。
本提案は2017年7月にステージ3に到達しました。そのときから、さまざまな代替案について幅広く考え、長い間議論してきました。 最終的に、この思考プロセスと継続的なコミュニティの関与により、このリポジトリにある提案について新たなコンセンサスが得られました。そのコンセンサスに基づいて、この提案に関する実装が進められています。
参照 https://caniuse.com/#feat=mdn-javascript_classes_private_class_fields
関連
-
[解決済み】JavaScriptで':'(コロン)は何をするのか?
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み】TypeError: AngularJSで未定義のプロパティ'get'を読み取れない
-
[解決済み] オブジェクト名の前のシングルアンダーコアとダブルアンダーコアの意味は何ですか?
-
[解決済み] C++の識別子でアンダースコアを使用する場合のルールについて教えてください。
-
[解決済み] Pythonの変数名や関数名の命名規則について教えてください。
-
[解決済み] Javaパッケージ名の単語区切り記号はどのようなものですか?
-
[解決済み] C++のクラスでメンバ変数に接頭辞を使用する理由
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み】XMLHttpRequestモジュールが定義されていない/見つからない
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】Uncaught SyntaxError: JSON の位置 0 に予期しないトークン u があります。
-
[解決済み】JS ファイルが net::ERR_ABORTED 404 (Not Found) を取得する)
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]