プロパティ名とメソッド名のアンダースコアプレフィックスは単なる慣例ですか? 質問する

プロパティ名とメソッド名のアンダースコアプレフィックスは単なる慣例ですか? 質問する

JavaScript のアンダースコア プレフィックスは、たとえば Python のプライベート クラス メソッドのように、単なる慣例なのでしょうか?

2.7 Python ドキュメントより:

オブジェクトの内部からしかアクセスできない「プライベート」インスタンス変数は、Python には存在しません。ただし、ほとんどの Python コードで従う規則があります。アンダースコアで始まる名前 (例: _spam) は、API の非公開部分 (関数、メソッド、データ メンバーのいずれであっても) として扱う必要があります。

これは JavaScript にも当てはまりますか?

次の JavaScript コードを例に挙げます。

function AltTabPopup() {
    this._init();
}

AltTabPopup.prototype = {
    _init : function() {
        ...
    }
}

また、アンダースコアのプレフィックスが付いた変数も使用されます。

    ...
    this._currentApp = 0;
    this._currentWindow = -1;
    this._thumbnailTimeoutId = 0;
    this._motionTimeoutId = 0;
    ...

単なる慣例ですか? それとも、アンダースコアの接頭辞の背後に何か他のものがあるのでしょうか?


私の質問は、この質問しかし、JavaScript におけるアンダースコア プレフィックスの重要性について理解が深まることはありませんでした。

ベストアンサー1

これは単なる慣例です。Javascript 言語では、アンダースコア文字で始まる識別子に特別な意味は与えられません。

とはいえ、これはサポートされていない言語にとっては非常に便利な慣例です。カプセル化すぐに使用できます。クラスの実装が悪用されるのを防ぐ方法はありませんが、少なくとも意図は明確になり、そのような動作がそもそも間違っていることが文書化されます。

おすすめ記事