博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery源码分析_工具方法(学习笔记)
阅读量:4325 次
发布时间:2019-06-06

本文共 2334 字,大约阅读时间需要 7 分钟。

expando:生成唯一JQ字符串(内部使用)

noConflict():防止冲突

isReady:DOM是否加载完成(内部)

readyWait:等待多少文件的计数器(内部)

holdReady():推迟DOM触发

ready():准备DOM触发

isFunction():是否为函数

isArray():是否为数组

isWindow():是否为window

isNumeric():是否为数字

type():判断数据类型

isPlainObject():是否为对象自变量

isEmptyObject():是否为空的对象

error():抛出异常

parseHTML():解析节点

parseJSON():解析JSON

parseXML():解析XML

noop():空函数

globalEval():全局解析JS

camelCase():转驼峰

nodeName():是否为指定节点名(内部)

each():遍历集合

trim():去前后空格

nakeArray():类数组转真数组

inArray():数组版indexOf

merge():合并数组

grep():过滤新数组

map():映射新数组

guid:唯一表示符(内部)

proxy():改this指向

access():多功能值操作(内部)

now():当前时间

swap():CSS交换(内部)

 

expando:生成唯一JQ字符串(内部使用)

源码:

 

 

运行结果:

 

noConflict():防止冲突

源码:

jquery对外提供的接口是$()或者jQuery(),$符号在很多别的库中也会使用到所以就可能会有冲突

不冲突的解决方法:

运行结果:

 

isReady:DOM是否加载完成(内部)

readyWait:等待多少文件的计数器(内部)

holdReady():推迟DOM触发

ready():准备DOM触发

$(function(){})与原生js中window.onload = function(){}

window.onload = function(){}原生的window.onload是页面中所有的东西(节点、图片、flash)都全部加载完成才会执行的语句

$(function(){})是在DOM(节点)加载完就会执行 ,加载速度更快

原生js中DOM加载完成事件:DOMContentLoaded,触发时就表示DOM加载完成了

深入跟踪发现 $(function(){})只是调用了原生js的DOMContentLoaded

JQ中DOM触发有三种方式:

1)  $(function(){});

2)  $(document).ready(function(){});

3)  $(document).on('ready',function(){})

holdReady()和ready()的使用方法:

源码:

1 isReady: !1, 2 readyWait: 1, 3 holdReady: function(e) { 4     e ? x.readyWait++ : x.ready(!0) 5 }, 6 ready: function(e) { 7     if (e === !0 ? !--x.readyWait : !x.isReady) { 8         if (!a.body) return setTimeout(x.ready); 9         x.isReady = !0, e !== !0 && --x.readyWait > 0 || (n.resolveWith(a, [x]), x.fn.trigger && x(a).trigger("ready").off("ready"))10     }11 },

下边写一个简单的a.js,有一个弹出框,在加载完成a.js后再执行后边的操作需要用holdReady(),否则有可能是先弹出2,后弹出1;

alert(1);
1  2 

运行结果:先弹出1,后弹出2;

 

isFunction():是否为函数

isArray():是否为数组

isWindow():是否为window

isNumeric():是否为数字

不多说,很简单。使用时在前边加 $. 就ok

内部源码,通过type实现:

1 isFunction: function(e) { 2     return "function" === x.type(e) 3 }, 4 isArray: Array.isArray || function(e) { 5     return "array" === x.type(e) 6 }, 7 isWindow: function(e) { 8     return null != e && e == e.window 9 },10 isNumeric: function(e) {11     return !isNaN(parseFloat(e)) && isFinite(e)12 }

 

isPlainObject():是否为对象自变量

首先 什么是对象自变量:json 或者new obj的形式

var obj = {}//json形式

var obj = new object();

alert($.isPlainObject(obj));//返回结果是boolean类型

 

 

-----------------未完待续-------------------------

 

转载于:https://www.cnblogs.com/liuyanan/p/5007838.html

你可能感兴趣的文章
java 下载文件
查看>>
The King’s Problem 强连通
查看>>
Lambda 表达式
查看>>
Ural1297 最长回文子串(后缀数组+RMQ)
查看>>
十九、CSS如何引入字体
查看>>
DS博客作业07--查找
查看>>
c# Invalidate() Update() Refresh()的区别
查看>>
work of 1/5/2016
查看>>
自己做了个微信小程序
查看>>
CMD获取当前目录的绝对路径
查看>>
HTML5新规范和CSS3新特性
查看>>
使用php后台给自己做一个页面路由,配合ajax实现局部刷新。
查看>>
类与对象(二)
查看>>
NSString 的常用方法
查看>>
mysql的engine不同,导致事物回滚失败的问题
查看>>
JAVAWeb使用POI做导出Excel
查看>>
今天解决了首页无头像被显示的问题
查看>>
charts 画折线图
查看>>
[py]__name__ 属于哪个文件
查看>>
技术分析淘宝的超卖宝贝
查看>>