jQuery的类型是Javascript对象、函数还是方法?

3

我已经使用jQuery有一段时间了,理解了选择器和链式编程的基础知识。现在我准备深入学习高级JavaScript概念。但是我现在对jQuery的多重角色感到困惑。

举个例子,

jQuery.add(...) 

这似乎是jQuery是一个JavaScript对象,我们可以向其发送消息。
jQuery(function() {...}) or jQuery(...selector...)

这次,jQuery似乎是一个可以带一些参数的JavaScript函数。
它到底是什么?

1
既然你可以调用 jQuery,那么它一定是一个函数。但是函数也是对象。你可以给它分配任何属性(比如 add)。 - Felix Kling
1
这是一个函数,但由于所有的函数都是对象,它也是一个对象。 - adeneo
jQuery 就像矩阵一样,它无所不能又无所不在。它能完成你所需的几乎所有任务,同时也只不过是 JavaScript 而已。 - Jamiec
3个回答

2

console.log(jQuery);

这段代码输出的结果是'> function',意思是jQuery是一个函数。同时你也可以尝试运行下面这行代码:

var some_name = function() { return 42; };
some_name.some_property = 84;
some_name.some_method = function() { return 63; };

typeof some_name; // outputs "function"

// but... 
some_name.some_method(); // ...is also possible :)

感谢简明扼要的解释。一个函数可以有一个方法,这真是太神奇了!这个概念可能会让像我这样的面向对象编程人员感到困惑。 - Nimit Pattanasri
@ToyHunter 你还不够面向对象 ;) JS 的核心是对象:函数就是一个对象。你可能来自于一个半吊子的面向对象语言 :-) - Florian Margaine
1
@FlorianMargaine,那不是真的。这是因为在JS中,函数是一级对象,而在其他面向对象编程语言中,它们不是。这并不一定使它们不够面向对象。 - Christoph
chester1000,所有都正确,但只是与解释jQuery的外围相关。 - Beetroot-Beetroot

0
首先,请记住,jQuery是以这样的方式编写的:
jquery(...);

等同于:

new jQuery(...);

更多细节请点击这里

其次,$jQuery 的同义词。

第三,重要的是要理解 JavaScript 允许调用函数而不分配返回的任何内容。 var foo = bar(auguments);bar(auguments); 都是合法的语句。

最后,JavaScript 函数是一等对象。它们可以传递到其他函数中,由其他函数返回,通过赋值进行别名处理,并成为其他对象的属性。

有了这个理解,就应该更容易看到像 $(selector);$(function(){...}); 这样的语句是如何工作的。


0

很难比它自己的描述更深入地解释:

jQuery是一个快速而简洁的JavaScript库,简化了HTML文档遍历、事件处理、动画和Ajax交互,以实现快速的Web开发。jQuery旨在改变您编写JavaScript的方式。

来源:jQuery.com

我一直认为它是另一种利用JavaScript实现编码简单化的语言。它作为函数来执行一行代码中的多个操作,而不是20多行;选择器将50多个字符缩短到10多个字符,它还可以做更多的事情。

如果您真的想深入了解编码,可以下载jQuery的开发版本。

jQuery:开发版本


4
我认为这个问题不是关于 jQuery 这个库是什么,而是关于 jQuery(和 $)所指代的值的含义。 - Felix Kling
@Felix Kling 感谢您澄清我的问题。 - Nimit Pattanasri
@FelixKling 啊,这就解释了。 - Aaron Walker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接