Mos*_* K. 44 javascript jquery prototype initialization
我正在查看jQuery以更好地理解它是如何工作的.构造函数基本上只是调用
new jQuery.fn.init
Run Code Online (Sandbox Code Playgroud)
我想知道在jQuery的原型中使用init有什么意义?不定义init()作为jQuery对象本身的一部分服务于同一目的吗?
基本上我想知道为什么jQuery的init函数位于jQuery.fn.init()和不在jQuery.init()
是否有人这样做:
jQuery('a').eq(0).hide().init('div').slideToggle(); //?
Run Code Online (Sandbox Code Playgroud)
mVC*_*Chr 56
编辑:重新阅读后我不认为这回答了你的问题,但是对于某人更好地理解jQuery如何工作可能是有用的,所以我要离开它.
正在进行的jQuery()是被定义为jQuery.fn.init()另一种说法jQuery.prototype.init(),即选择器功能!这意味着没有人会打电话jQuery.fn.init()或jQuery.init()因为jQuery()IS .init()!
什么?
让我们来看看你正在谈论的那段代码:
// Define a local copy of jQuery
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context );
},
Run Code Online (Sandbox Code Playgroud)
在评论中它说的只是我所说的,但更简单.但这只是jQuery的本地副本...但是,如果你在自执行函数结束时转到第908行(版本1.4.4),你会看到:
// Expose jQuery to the global object
return (window.jQuery = window.$ = jQuery);
})();
Run Code Online (Sandbox Code Playgroud)
......这意味着这个地方jQuery成为全球性的jQuery.所以?所以......这个地方jQuery实际上是jQuery.fn.init()对的吗?那是什么init()?如果你从第100行到第208行看,你会发现它是选择器方法.什么是选择器方法?这是你用所有的时间来寻找标签,标识,类...这方法 $('#id'),jQuery('.class'),$('ul li a')...选择器功能!
因此,没有人会打电话,jQuery.init('div')因为它是jQuery('div')在该任务之后的冗长版本.并且记住它jQuery.fn与说完全相同,jQuery.prototype所以该部分正在做的是分配.init()作为jQuery对象原型的方法.IE是一个jQuery插件.
P,这是一口.我希望这是有道理的,如果有任何更正,以防我在这个冗长的解释的任何部分误导,请告诉我.
$()是一个instanceof (new $())是一个instanceof(new $.fn.init())
jQuery采用的技术是如何实现这一目标的.$()总是返回,好像用new关键字调用它一样.但是,它不是在this内部引用上使用条件开关,而是function jQuery() {...}在所有情况下都使用外部委托对象.这个外部委托对象jQuery.fn.init() {...}被赋予了jQuery原型,因此它的对象'type'是jQuery,并且它的所有实例都是实例jQuery.
| 归档时间: |
|
| 查看次数: |
47922 次 |
| 最近记录: |