您的位置:首页 > Web前端 > JQuery

jQuery 核心

2016-01-11 23:21 731 查看

jQuery 核心 “3.0.0-pre”

1.插件机制
jQuery.extend(object)
jQuery.fn.extend(object)


jQuery.fn = jQuery.prototype={};
jQuery.extend = jQuery.fn.extend = function() {}


区别:

jQuery.extend(object)
:扩展的是jQuery这个对象本身,相当于对jQuery这个对象里面添加了方法;用法:$.~;

jQuery.fn.extend(object)
:扩展的是jQuery的原型里面的方法,是对于个体来说。需要实例化对象才能使用;eg:$(“input”).~;

jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context );
},


小结:如果jQuery是人这个类的话,那么extend就是往这个类里面添加男人、女人、老人、小孩……;而fn.extend就是给特定的人添加唱歌、跳舞;一般添加插件就用
(jQuery.fn.extend())
;

2.多库共存
jQuery.noConflict(Boolean)
,这个方法主要是确保jQery不会与其它的库里的$对象发生冲突;

源码:

var

// Map over jQuery in case of overwrite
_jQuery = window.jQuery,

// Map over the $ in case of overwrite
_$ = window.$;

jQuery.noConflict = function( deep ) {
if ( window.$ === jQuery ) {
window.$ = _$;
}

if ( deep && window.jQuery === jQuery ) {
window.jQuery = _jQuery;
}

return jQuery;
};

if ( !noGlobal ) {
window.jQuery = window.$ = jQuery;
}


用法:

1.上面的
_jQuery/_$
都为undefined;因为在他们下面
window.jQuery 和 window.$
才被赋的值,声明是在作用域的顶端所以是
undefined


2.noConflict方法返回的是jQuery对象,所以可以你自己定义方法名;eg:
var jq = jQuery.noConflict(true);
用Boolean值得原因是把方法名的jQuery也去掉;

3.如果只与其它的库同名$,那么就可以直接调用
jQuery.noConflict()
方法;从源码中就可以看出,这样就不会进第二个if判断语句;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息