jQuery使用_data來設置它存儲在對象上的數據的'pvt'標誌。使用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
標誌。
你可以看到pvt
一個例子處理這裏的jQuery.data()
這一部分:
// 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 ];
}
你經常會請參閱旨在作爲* private *或其他特殊含義處理的變量和函數(或對象方法/屬性),它們具有像'_'這樣的預編輯字符,以便按範圍或應用程序將它們組合在一起。在jQuery中,它僅僅意味着*把它當作對象的私有*,即,**不要外部訪問。** –