Car*_*lis 11 javascript jquery
我正在使用jQuery.data()来存储jQuery DOM对象引用:
myObj.data('key', $('#element_id'));
Run Code Online (Sandbox Code Playgroud)
我会经常使用它(通常是相同的DOM对象),所以我不想占用太多内存.jQuery是存储引用,还是存储DOM对象的深层副本?在这种情况下,我认为最好存储元素id而不是元素引用.
Den*_*ret 11
您构建的jQuery对象$('#element_id')包含
您在数据(在节点中)存储的是jQuery对象.此对象不包含引用的DOM节点的任何深层副本,因此您不是存储深层副本,而只是存储主要包含字符串和几个指针的小对象.
并且当缓存DOM节点引用时,它比仅具有id更有效(边缘,因为通过id查找节点总是很快,但如果你有一个更复杂的选择器,这将产生不同).
所以,在我看来,你做的很好,效率很高.
您可以直接查看源代码,yay代码是开源的:)
data.js的第51和52行有一个有用的评论:
//可以将对象传递给jQuery.data而不是键/值对; 这得到了
//浅被复制到现有缓存上
所以我猜这是一个浅薄的副本!
更新07/14 - 那个链接是head:master所以现在已经完全过时了,这里是我正在谈论的规范链接:在16ba6ff