underscore源码学习笔记(1)
来源:互联网 发布:濒死 知乎 编辑:程序博客网 时间:2024/05/23 15:27
最外层架构
(function (){ var root = this;}(this))
和jq类似
- 减少全局命名空间的污染,所有的变量都是局部的。
- 接收this参数,可以是window对象也可以是server端,这样underscore就可以在前后端都能使用
缓存部分变量
(function (){ var root = this; var previousUnderscore = root._;//猜测此举是暂存一个undefined值 var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; .... ....}(this))
- 缓存一个常用的方法和变量,减少原型查找时间
- 减少代码量,便于压缩
创建 _真正的underscore对象
var _ = function(obj) { if (obj instanceof _) return obj; if (!(this instanceof _)) return new _(obj); this._wrapped = obj; };
这段代码用于真正的创建_这个underscore对象
使用了instanceof操作符进行判断
下面是instanceof操作符的实现
function instance_of(L, R) {//L 表示左表达式,R 表示右表达式 var O = R.prototype;// 取 R 的显示原型 L = L.__proto__;// 取 L 的隐式原型 while (true) { if (L === null) return false; if (O === L)// 这里重点:当 O 严格等于 L 时,返回 true return true; L = L.__proto__; } }
- 原理就是检测实例对象中是否有指向构造函数的原型对象prototype的指针 proto
- 使用类似递归的while循环操作
0 0
- underscore源码学习笔记(1)
- Underscore 源码学习笔记
- underscore源码学习(2)
- 阅读underscore源码笔记
- 源码学习----underscore
- underscore.js学习笔记
- underscore.js学习笔记
- underscore.js学习笔记
- Underscore.js API 学习笔记
- Underscore学习(1)
- 读白刃underscore疑惑分析--underscore源码学习一
- 读白刃underscore疑惑分析--underscore源码学习二
- 读白刃underscore疑惑分析--underscore源码学习三
- underscore学习笔记—集合函数/collections(一)
- underscore学习笔记—集合函数/collections(二)
- underscore学习笔记—对象函数/Objects(一)
- underscore学习笔记—对象函数/Objects(二)
- underscore学习笔记—数组函数/Arrays
- opencv
- android 自定义组合控件
- hdu 5439 Aggregated Counting 2015长春网络赛 分块 二分 预处理
- [ios学习]iOS架构师的职业发展方向
- AFNetWorking与Https
- underscore源码学习笔记(1)
- Android 判断程序是不是第一次运行
- Linux chmod命令详解
- quartz CronExpression表达式
- CSS padding margin border
- studio快捷键
- Flex4 添加鼠标右键于Tree
- codeforces #319 DIV2 577B Modulo Sum
- H264编码 封装成MP4格式 视频流 RTP封包