jquery 源码学习
来源:互联网 发布:浏览器 for mac 编辑:程序博客网 时间:2024/06/18 11:06
//jquery插件开发
;(function ( $, window, document, undefined ){ //函数体内具体代码 })(jQuery, window,document);
1、代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而引起合并后的语法错误。
2、匿名函数(function(){})();:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。避免函数体内和外部的变量冲突。
3、$实参:$是jquery的简写,很多方法和类库也使用$,这里$接受jQuery对象,也是为了避免$变量冲突,保证插件可以正常运行。
4、window, document实参分别接受window, document对象,window, document对象都是全局环境下的,而在函数体内的window, document其实是局部变量,不是全局的window, document对象。这样做有个好处就是可以提高性能,减少作用域链的查询时间,如果你在函数体内需要多次调用window 或 document对象,这样把window 或 document对象当作参数传进去,这样做是非常有必要的。当然如果你的插件用不到这两个对象,那么就不用传递这两个参数了。
5、最后剩下一个undefined形参了,那么这个形参是干什么用的呢,看起来是有点多余。undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined
1、$.grep 查找满足过滤函数的数组元素。原始数组不受影响。
源码:grep: function( elems, callback, invert ) {
var callbackInverse,
matches = [],
i = 0,
length = elems.length,
callbackExpect = !invert;
// Go through the array, only saving the items
// that pass the validator function
for ( ; i < length; i++ ) {
callbackInverse = !callback( elems[ i ], i );
if ( callbackInverse !== callbackExpect ) {
matches.push( elems[ i ] );
}
}
return matches;
}
var len = +second.length,
j = 0,
i = first.length;
while ( j < len ) {
first[ i++ ] = second[ j++ ];
}
// Support: IE<9
// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)
if ( len !== len ) {
while ( second[j] !== undefined ) {
first[ i++ ] = second[ j++ ];
}
}
first.length = i;
return first;
}
console.log(arr.join(', ')) //[0,1,2,2,3,4]
- Jquery 源码学习
- jQuery源码学习
- jquery源码学习
- jquery源码学习1
- jquery源码学习3
- jquery源码学习1
- jquery源码学习2
- jQuery源码学习(一)
- jQuery源码学习
- jQuery源码学习(二)
- jQuery源码学习(三)
- jQuery源码学习(四)
- JQuery源码学习
- jquery源码学习
- jquery源码学习
- jquery 源码学习
- jQuery源码学习笔记一
- jquery源码分析学习地址
- 杂记js
- 可重入和不可重入
- Android ORMLite 框架的入门用法
- 2017 多校训练赛-总结
- Unity IL2CPP原理合辑
- jquery 源码学习
- apt-get remove 用法详解
- 神经网络
- IAR Warning[Pe223]: function 'assert_param' declared implicitly 解决方法
- mybatis配置文件中小于大于号的处理
- 代替Excel上载的方法
- 轮播图jq
- SQL Server 扩展属性
- ==与equal区别