jQuery sử dụng _data để đặt cờ 'pvt' cho dữ liệu mà nó lưu trữ trên đối tượng. pvt
được sử dụng để khi bạn yêu cầu dữ liệu công khai từ đối tượng, dữ liệu pvt không được trả lại. Điều này là để giữ cho việc sử dụng nội bộ của jQuery đối với cơ chế .data()
(giống như việc chuyển đổi) thực hiện việc sử dụng công khai của .data()
.
Bạn có thể thấy tuyên bố này trong nguồn jQuery:
// For internal use only.
_data: function(elem, name, data) {
return jQuery.data(elem, name, data, true);
},
Mà chỉ cần gọi jQuery.data
và buộc tham số thứ tư (đó là sự riêng tư) đến mức khó tin. Khi truy xuất dữ liệu, nếu cờ pvt
được đặt, thì nó sẽ được truy xuất theo một cách hơi khác. Giao diện công khai tới .data()
không hiển thị cờ pvt
.
Bạn có thể xem ví dụ về pvt
xử lý ở đây trong phần này của 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);
}
}
và sau đó trong hàm cùng, nhận xét này là khá mô tả:
// 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 ];
}
Thông thường bạn sẽ xem các biến và hàm (hoặc các phương thức/thuộc tính đối tượng) có nghĩa là được xử lý dưới dạng * private * hoặc một số ý nghĩa đặc biệt khác có ký tự được đặt trước như '_' để nhóm chúng lại với nhau theo phạm vi hoặc ứng dụng. Trong jQuery, nó chỉ có nghĩa là * đối xử với điều này là riêng tư với đối tượng *, tức là, ** Không truy cập từ bên ngoài. ** –