jQueryはオブジェクトに保存するデータの 'pvt'フラグを設定するために_dataを使用します。 pvt
は、オブジェクトからパブリックデータを要求すると、pvtデータが返されないように使用されます。これは、jQueryの内部で.data()
メカニズムを使用して(どのようなトグルが行われているのか)、一般公開されている.data()
を有効にしないようにするためです。
あなたはjQueryのソースにこの宣言を見ることができます:
// For internal use only.
_data: function(elem, name, data) {
return jQuery.data(elem, name, data, true);
},
だけjQuery.data
を呼び出し、真であると(プライバシある)第四パラメータを強制します。データを取り出すときに、pvt
フラグがセットされていれば、若干異なる方法で検索されます。 .data()
への公開インターフェイスはpvt
フラグを公開しません。
あなたはjQuery.data()
のこの部分で、ここで扱うpvt
の例を参照することができます
// An object can be passed to jQuery.data instead of a key/value pair; this gets
// shallow copied over onto the existing cache
if (typeof name === "object" || typeof name === "function") {
if (pvt) {
cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);
} else {
cache[ id ] = jQuery.extend(cache[ id ], name);
}
}
し、後でその同じ関数内に、このコメントはかなりわかりやすいです:
// Internal jQuery data is stored in a separate object inside the object's data
// cache in order to avoid key collisions between internal data and user-defined
// data
if (pvt) {
if (!thisCache[ internalKey ]) {
thisCache[ internalKey ] = {};
}
thisCache = thisCache[ internalKey ];
}
多くの場合、あなたは'LL * private *やその他の特殊な意味として扱われることになっている変数や関数(またはオブジェクトメソッド/プロパティ)がスコープやアプリケーションでグループ化する '_'のようなプリレンドされた文字を持っているのを見てください。 jQueryでは、単にオブジェクト*に対してこれを扱うようにしています。つまり、**外部からアクセスしないでください。** –