JQ的一些扩展工具方法( 妙味讲堂 - 视频笔记 - 第三部分)
工具方法: 方便底层实现调用
一、生成jQuery版本号
源码实现:
expando: "jQuery" + (core_version + Math.random()).replace(/\D/g, "");
//生成唯一JQ字符串(内部)二、冲突检测
源码实现:
noConflict: function(deep) {
if (window.$ === jQuery) {
window.$ = _$;
}
if (deep && window.jQuery === jQuery) {
window.jQuery = _jQuery;
}
return jQuery;
}
var $ = 123;
var aaa = $.noConflict(true);
aaa(function() {
alert(jQuery) // 123
})三、生命周期函数
DOM准备完毕ready()
$(function() {})
$(document).ready(function() { })
$().ready();ready: function() { }
//监听 DOMContentLoaded 事件
jQuery.ready.promise().done(fun)
$.ready();if (document.readyState === "complete") {} else {}
readyList.resolveWidth(document, [jQuery])DOM加载完毕 onload()
// 文件加载完,包括图片等媒体文件记载完
window.onload = function() {}四、holdReady()
$.holdReady(true) //推迟执行,ready() 不能执行
$(function() {
alert()
})
$.holdReady(false) //推迟释放,ready() 可以执行
$.holdReady(true)
$.getScript('a.js', function() { //异步,想要异步执行完再执行ready
$.holdReady(false)
})
$(function() {
console.log(2)
})五、isFunction()
判断参数是不是函数 源码实现:
isFunction: function() {
return jQuery.type(obj) === "function";
}
//实例
function aaa() {
}
var bbb = "123"
console.log($.isFunction(aaa)) // true
console.log($.isFunction(bbb)) // false六、isWindow()
判断是不是window对象
源码实现:
isWindow: function(obj) {
return obj != null && obj === obj.window
}
//实例
console.log(isWindow(this));//非严格模式 true;严格模式false七、isNumeric()
判断是不是数字
源码实现:
isNumeric: functiono(num) {
return !isNaN(parseFloat(obj) && isFinite(obj))
// parseFloat 装换笔面试NaN isFinite 判断是否是有限数字
}八、type()
判断参数类型
typeOf(); //只能判断基本类型
源码实现:
type: function(obj) {
if (obj == null) {
return String(obj);
}
return typeof obj === "object" || typeof obj === 'function' ?
class2type[core_toString.call(obj)] || "object" : typeof obj
}