最近研究数据缓存,稍微总结一下,以后续继补充:
jQuery 的 data API 实现方法 有缓存数据的果效
应用 IE 7 (IE8+ 在控制台切换至IE7 模式),当DOM 点节有自定义数据性属时,检查 DOM 点节可即看到 形如 jQuery18305664906559272507 的性属,这便是 用于从数据存储象对中获得自定义数据的键。
当 自定义数据性属是一个 json 格式字符串时,缓存的数据如果被修改, 则修改后的数据续继存在于缓存系统中, 如果不留心,这可能致导一些BUG,因为你可能没有注意到,这个数据被修改过了。
jQuery data 实现的码源可浏览此文【jQuery1.8.2码源析解之jQuery.data】:
http://www.cnblogs.com/lovesueee/archive/2012/10/24/2737839.html
<!DOCTYPE HTML> <html> <head> <script src="http://code.jquery.com/jquery-1.8.3.js"></script> </head> <body> <input type="hidden" value="" data-json='{"a":123,"b":456}' id="tst" /> <script> var node = $("#tst"); console.log(node.attr("data-json")); var data = node.data("json"); console.log(data); data.b = 'hello'; var data1 = JSON.parse(node.attr("data-json")); console.log(data1); console.log('data===data1',data===data1); var data2 = node.data("json"); console.log(data2); console.log('data===data2',data===data2); var data3 = JSON.parse(node.attr("data-json"));//这样取值不受缓存影响 console.log(data3); </script> </body> </html>
{"a":123,"b":456} Object {a: 123, b: 456} Object {a: 123, b: 456} data===data1 false Object {a: 123, b: "hello"} data===data2 true Object {a: 123, b: 456}
文章结束给大家分享下程序员的一些笑话语录: 苹果与谷歌之争就是封闭收费与自由免费思想之争。(别急着把google来膜拜哦?那可是一家公司,以赚钱为目标的公司!当年我Party就是这样把广大劳动人民吸引过来的。今天的结果你们都看到了。)