你能解释一下jQuery如何同时使用$作为函数和对象吗?

mik*_*ana 2 javascript jquery prototype

我已经查看了jQuery源代码,但我并没有完全理解它如何在选择器中使用$ symbol作为函数

$el = $('#element');
Run Code Online (Sandbox Code Playgroud)

并作为辅助函数中的对象

$.each([1, 2, 3], function(num) { ... });
Run Code Online (Sandbox Code Playgroud)

$ function创建了新的jQuery.fn.init,它在原型中的某个地方,我很困惑.

Guf*_*ffa 5

Javascript中的函数是一个对象,因此您可以向函数添加属性.

例:

function lib(x) {
  return x + 1;
}

lib.add = function(a, b){
  return a + b;
};
Run Code Online (Sandbox Code Playgroud)

现在,您既可以将其用作函数,也可以将其用作具有以下功能的对象:

var n = lib(4); // n = 5

var m = lib.add(7, 8); // m = 15
Run Code Online (Sandbox Code Playgroud)

jQuery做同样的事情,只是使用$名称而不是lib我在示例中使用的名称.

$名称通常是名称的别名jQuery,并且jQuery.fn是对jQuery函数原型的引用.所以当jQuery.fn.init被叫时,它就像是一样jQuery.prototype.init.