sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)
2015-06-30 22:36
826 查看
sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)
这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之前一直做使用Java语言开发,其丰富的组件类库使得开发效率那叫一个快呀!突然转来做JavaScript一时间还有点儿不适应(快半年了),不过自从看见那么多漂亮的网站和对JavaScript接触的越来越多,也发现了其中的一些乐趣。正如自己一直坚信的那样,编程语言仅仅是工具,重要的是编程思想!使用JavaScript的过程中也增加了不少对Java的理解。同时也感受到了用语言最基本的东西去实现一些常用组件也是一件什么快乐的事情。今天的源代码学习中看到关于缓存的是实现的时候,有进一步加深了对JavaScript闭包的理解!大神John Resig真的很叼呀~~他家有时间一定要看看他的那本书《Secrets of the JavaScript Ninja》,不过这本书貌似没哟中文版~~~!!!
function map(length) { // 如果没有指定Map的长度,默认初始长度为16 length = length || 16; var keys = new Array(length); function cache( key, value ) { // 在key后面加上" "字符串可以防止key的值和本地的一些属性值命名冲突 // 采用表达式语句,确保语句能够正确执行 return (cache[ key + " " ] = value); } // 返回cache函数,利用了JavaScript中强大的闭包功能 return cache; }
这里使用了JavaScript的闭包特性,模拟实现了Java中的Map结构。利用闭包这样就可以确保我们每次操作的都是同一个Array对象,而不是新开辟的Array对象。不过,有一点要注意:JavaScript的垃圾回收机制采用的是引用计数方案,在value的赋值上要注意别造成了循环引用。这样很容易就造成了内存泄露!!
相关文章推荐
- 【数据结构】链表
- get(index) set(index value), setAll(value)都为O(1)的数据结构
- 数据结构的基本概念
- 数据结构常见面试题
- java 数据结构
- 数据结构链表的操作集合(建立,遍历,插入,删除,排序,长度,空判断等)
- 数据结构顺序表的操作全集(创建,遍历,插入,删除,排序等等)
- swift篇第一期:简单的数据结构
- 大话数据机构——第一张 数据结构绪论
- 经典算法研究系列:五、红黑树算法的实现与剖析
- 《数据结构与算法分析c++描述》读书笔记三——AVL树
- 《数据结构与算法分析c++描述》读书笔记一——表
- 数据结构和算法第一章
- 数据结构和算法系列 - AVL树
- 数据结构基础
- 数据结构--线性表
- BST数据结构题
- 排序算法之堆排序 分类: C/C++ 数据结构与算法 2015-06-30 08:41 216人阅读 评论(1) 收藏
- 排序算法之快速排序 分类: C/C++ 数据结构与算法 2015-06-30 07:59 95人阅读 评论(0) 收藏
- 查询json数据结构的8种方式