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) });

 

posted @ 2017-12-19 22:51  _watson  阅读(246)  评论(0编辑  收藏  举报