jQuery 类型类结构
所以我想知道是否有人可以帮助我理解 jQuery“类”的工作原理。据我所知,它的工作方式就像一个静态类,如下所示:
if(!$) { var $ = new function(){} }
我认为..
现在,让我感到困惑的是,如何使用或不带参数来调用方法,如下所示:
$("a").removeClass("test");
$.get('myhtmlpage.html', myCallBack);
我假设传递该参数只是返回document.getElementById(argument);
但是如何呢?这个论点是如何在事后传递到类中的?另外,这是方法链的一些结果吗?
任何可以帮助我了解正在发生的事情的信息都会很棒!谢谢。
So I was wondering if anyone could help me understand how the jQuery 'class' works. From what I can tell, it works like a static class like such:
if(!$) { var $ = new function(){} }
I think..
Now, what is confusing to me, is how you can call a method both with OR without arguments like such:
$("a").removeClass("test");
$.get('myhtmlpage.html', myCallBack);
I am assuming passing that argument simply returns document.getElementById(argument);
But how? How is this argument passed into the class after the fact like this? also, is this some result of method chaining?
Anything info to help me understand what is going on would be great! Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我正在使用 jQuery 源代码,因此您也可以查看它。
$
函数没有显式定义,而是链接到jQuery
对象:jQuery
对象的定义如下:init: function( 选择器
部分处理$('foo')
情况。如果没有给出参数,则使用另一个函数:
I'm working with the jQuery source here, so you can look at it as well.
The
$
function isn't explicitly defined, but instead linked to thejQuery
object:The
jQuery
object is defined like so:The
init: function( selector
part handles$('foo')
cases.If no parameters are given, the another function is used:
JavaScript 中的变量可以包含 $。例如 foo 和 $foo 是不同的变量。自然 $ 是一个有效的对象。
接下来值得注意的是,在 JavaScript 中一切都是类。函数也是一个类,所以你的函数也可能有方法。
$ <-- 这是一个带有方法的函数。
$('a') <-- 这会执行执行某些操作并再次返回 $ 的函数。
$.get() <-- 这会调用该 jQuery 函数的方法。
$('a').get() <-- 这会执行带有参数 a 的函数,该函数再次返回 $,然后您获取它的方法并再次执行它。
当调用 $('a') 时,不会返回完全相同的 $,它会包含有关您使用的选择器的一些额外信息。
我最后要注意的是,当你调用 $(x); 时其中 x 是一个函数,然后将其用作注册文档就绪回调的快捷方式。
Variables in JavaScript can contain $. for example foo and $foo are different variables. Naturally $ is a valid object.
Next thing worth noting is that in JavaScript everything is a class. Function is a class too, so your function might have methods too.
$ <-- this is a function with methods.
$('a') <-- this executes that function which does something and return $ again.
$.get() <-- this calls method of that jQuery function.
$('a').get() <-- this executes function with argument a which returns $ again then you grab it's method and execute that again.
When $('a') is called, not the exact same $ is returned, it would contain some extra information about the selector you used.
My final note is that when you call $(x); where x is a function, then it's used as a shortcut to registering on-document-ready call-back.