JQuery源码解读 JQ的一些扩展工具方法( 妙味讲堂 - 视频笔记 - 第三部分)

JQuery源码解读



JQ的一些扩展工具方法( 妙味讲堂 - 视频笔记 - 第三部分)


//工具方法: 方便底层实现调用


// 一、
// 源码实现:
expando: "jQery" + (core_version + Math.random()).replace(/\D/g, ""); //生成唯一JQ字符串(内部)



var $ = 123;


// 二、
// 源码实现:
noConflict: function(deep) {
    if (window.$ === jQuery) {
        window.$ = _$;
    }
    if (deep && window.jQuery === jQuery) {
        window.jQuery = _jQuery;
    }
    return jQuery;
}


var aaa = $.noConflict(true);


aaa(function() {
    alert(jQuery) // 123
})



// 三、
//DOM加载完就执行

// 1、
$(function() {

    })


    =>

    // 2、
    $(document).ready(function() {

    })

    =>

    // 3、
    $().ready();

ready: function() {

    }
    //监听 DOMContentLoaded 事件 

    =>


    // 4、
    jQuery.ready.promise().done(fun)


    =>

    // 5、
    $.ready();
if (document.readyState === "complete") {

} else {
    // complete
}



// 6
readyList.resolveWidth(document, [jQuery])



    // 7、
    => fn






// 文件加载完
window.onload = function() {


}


// 四、
$.holdReady(true) //推迟执行,ready() 不能执行


$(function() {
    alert()
})

$.holdReady(false) //推迟释放,ready() 可以执行



$.holdReady(true)
$.getScript('a.js', function() { //异步,想要异步执行完再执行ready
    $.holdReady(false)
})


$(function() {
    console.log(2)
})


// 五、

function aaa() {

}

var bbb = "123"

console.log($.isFunction(aaa)) // true

console.log($.isFunction(bbb)) // false


// 源码实现:
isFunction: function() {
    return jQuery.type(obj) === "function";

}



// 源码实现:

isWindow: function(obj) {
    return obj != null && obj === obj.window
}

// 源码实现:
isNumeric: functiono(num) {
    return !isNaN(parseFloat(obj) && isFinite(obj))
    // parseFloat 装换笔面试NaN  isFinite 判断是否是有限数字
}




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
}

  

posted @ 2019-09-29 10:01  SunLike阿理旺旺  阅读(138)  评论(0编辑  收藏  举报