jquery源码之拓展工具方法jQuery.extend()
jQuery.extend({
expando :生成唯一jq字符串(内部):作用,用于作为唯一映射关系:"jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" )
noConflict() :防止冲突,当外界使用 $ 或者 jQuery 时候,jq可以自动方法这两个对外接口,通过调用 noConflict() 函数,自定义对外使用接口,例子如下2;
isReady :dom是否加载完成(内部使用)
readyWait :等待多少文件的计数器(内部使用)
holdReady() :推迟dom触发
ready() :准备dom触发
isFunction() :是否为函数
isArray :是否为数组
isWindow() :是否为window
isNumeric() :是否为数字
type() :判断数据类型
isPlainObject() :是否为对象自变量
isEmptyObject() :是否为空的对象
error() :抛出异常
parseHTML() :解析节点
parseJSON() :解析json
。。。【未完待续,第16次课】
trim() :去前后空格
makeArray() :类数组转数组
inArray() :数组版 indexOf
merge() :合并数组
grep() :过滤新数组
map() :映射新数组
guid() :唯一标志符(内部使用)
proxy() :改this指向
access() :多功能值操作(内部使用)
now() :当前时间
swap() :css交换(内部使用)
)};
jQuery.ready.promise = function() { }; 监测dom的异步操作(内部使用)
function isArraylike() { }; 类似数组的判断(内部使用)
知识点梳理
1、jQuery.extend()方法解读,以插件形式进行拓展工具方法
a. jq对象使用
b. 原生js使用
c. 在源码中使用,源码中的实例方法很多调的都是jq的工具方法,作为jq源码最底层的架构;
2、noConflict() 函数
<script> var $=123; var jQuery=456; </script>
<script src="jquery-2.0.3.js"></script>
<script>
var emma = $.noConflict(); // 对 $ 的放弃
emma(function() { alert($); }) // 弹出123
var watson = $.noConflict(true); // 对 jQuery 的放弃
watson(function() { alert(jQuery); }) // 弹出456
</script>
3、$(function() {}); 和 window.onload = function() { }; 两者的区别
前者:页面中,dom加载完毕,然后调用方法,本质是监听原生的 DOMContentLoaded 事件;
后者:页面中,所有资源都加载完毕,然后调用方法;
jq源码对于前者的实现如下:
4、代码同步化处理函数:$.holdReady();
$.holdReady(true);
$.getScript('a.js', function() { $.holdReady(false); });
$.holdReady(true);
$getScript('b.js', function() { $.holdReady(false); });
$(function() { alert(2) });