我正在使用 jQuery.data() 来存储 jQuery DOM 对象引用:
myObj.data('key', $('#element_id'));
我会经常使用它(通常用于相同的 DOM 对象),所以我不想占用太多内存。jQuery 是存储引用,还是存储 DOM 对象的深层副本?在这种情况下,我认为最好存储元素 id 而不是元素引用。
我正在使用 jQuery.data() 来存储 jQuery DOM 对象引用:
myObj.data('key', $('#element_id'));
我会经常使用它(通常用于相同的 DOM 对象),所以我不想占用太多内存。jQuery 是存储引用,还是存储 DOM 对象的深层副本?在这种情况下,我认为最好存储元素 id 而不是元素引用。
您构建的 jQuery 对象$('#element_id')
包含
您存储在数据中(在节点中)的是 jQuery 对象。该对象不包含所引用 DOM 节点的任何深层副本,因此您存储的不是深层副本,而是一个主要包含字符串和一些指针的小对象。
并且由于 DOM 节点引用被缓存,它比仅具有 id 更有效(稍微,因为通过 id 查找节点总是很快,但如果您有一个更复杂的选择器,这会有所不同)。
所以在我看来,你所做的事情是好的和有效的。
您总是可以直接查看源代码,欢迎开源:)
data.js 的第 51 和 52 行有有用的评论:
// 可以将对象传递给 jQuery.data,而不是键/值对;这得到
// 浅拷贝到现有缓存中
所以我猜这是一个浅拷贝!
更新 07/14 - 该链接是 head:master 所以现在完全过时了,这是我所说的规范链接:截至 16ba6ff