为什么jQuery语法如此奇怪 - 它甚至如何被解析?

时间:2014-08-23 23:38:47

标签: javascript jquery

我试图理解jQuery,但是我对语法的阻碍让我感到很奇怪。我甚至不理解常规JavaScript解析器如何解析它!我可以阅读示例代码,并且我会从附带的材料中了解 它在做什么,但我不理解如何

我知道$只是jQuery的别名,但这并不能回答这个问题。使用经典的jQuery函数来延迟事物直到页面完全加载:

$(document).ready(function() {
  ...
});

或jQuery选择器,它选择DOM中的所有p元素并应用CSS规则:

$('p').css('color', 'blue');

所以...某种方式document'p'被识别为关键字,并与相应的值相关联,对吧?除非它看起来不是真的,因为然后jQuery必须预先计算它将返回的结果任何可能的键可能被要求,包括jQuery可能无法知道的元素ID!那么它究竟是如何起作用的?

(编辑以修复描述代码时的错误)

1 个答案:

答案 0 :(得分:9)

答案比你想象的要简单。 $确实是jQuery库的别名...它是作为单个函数实现的。当您看到如下代码时:

$(document).ready(function() {
  ...
});

您所看到的是:

  1. jQuery函数($)被调用...
  2. ...使用参数document ...
  3. ...返回一个对象......
  4. ...有ready方法,被调用...
  5. ...其参数的匿名函数。
  6. 当我第一次遇到它时,我遇到了麻烦。我知道在JavaScript中,函数是一流的对象(这就是为什么你可以传递一个作为参数),但不知何故,这并没有让我明白那些显然是一个大而复杂的对象的东西(即jQuery库)也可能是函数

    事实上,两者都是。它是一个函数,它也是一个具有自己属性的对象,包括函数。这就是为什么有时你会看到如下代码:

    $.getJSON('http://www.foo.com/search?q=....
    

    在我们之前的代码中,$是我们调用的函数。在此代码中,$是我们调用的函数getJSON所在的对象。