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

时间:2015-01-02 22:28:37

标签: javascript jquery prototype

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

$el = $('#element');

和辅助函数中的对象

$.each([1, 2, 3], function(num) { ... });

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

2 个答案:

答案 0 :(得分:5)

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

示例:

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

lib.add = function(a, b){
  return a + b;
};

现在你可以将它既作为函数又作为具有函数的对象使用:

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

var m = lib.add(7, 8); // m = 15

jQuery也是如此,只是使用$作为名称,而不是我在示例中使用的lib

$名称通常是jQuery名称的别名,jQuery.fn是对jQuery函数原型的引用。因此,在调用jQuery.fn.init时,它与jQuery.prototype.init相同。

答案 1 :(得分:0)

$只是jquery的简写,代表一个函数。

$el = $('#element');中,$(与jquery相同)是将选择器作为函数参数的函数名,从而产生语法$();

执行此选择器函数时,执行jQuery.fn.init(初始化函数)并返回jQuery对象,从而公开可以使用的不同选择器方法。