Javascript 为什么jQuery将元素存储为函数?

Javascript 为什么jQuery将元素存储为函数?,javascript,jquery,Javascript,Jquery,我打电话给一个司机,他的身份证是这样的: var car = $('#car'); console.log(car); 当我记录它时,它会像这样在控制台中返回: [div#car, context: document, selector: "#car", jquery: "1.9.0", constructor: function, init: function…] 日志中的“constructor:function”部分是否告诉我它已存储为函数,如果是,为什么以及如何将其存储为对象?jQu

我打电话给一个司机,他的身份证是这样的:

var car = $('#car');
console.log(car);
当我记录它时,它会像这样在控制台中返回:

[div#car, context: document, selector: "#car", jquery: "1.9.0", constructor: function, init: function…]

日志中的“constructor:function”部分是否告诉我它已存储为函数,如果是,为什么以及如何将其存储为对象?

jQuery在接受参数时创建函数实例。在本例中,您发送了一个选择器,它是元素的id。收到此选择器后,jquery在“internal”jquery函数上使用
new
关键字。结果是一个函数对象。每次使用
$
jQuery
时,您都要求它提供一个jQuery对象,这是向jQuery函数发出
new
的结果。这个对象附带了很多东西,包括与选择器匹配的元素数组,以及允许您访问API的jQuery原型

所以,我想澄清一下。它是一个物体。它是由一个函数构造的


编辑 下面是一些示例代码,帮助您了解这是如何发生的

首先,此演示是一个简单的jquery对象:

html

第二,这是我写的一个例子

html


您会注意到,它们记录的内容几乎完全相同。
$
中没有魔法,它只是一个字符串,很像
Y
is或
jQuery
,或
HelloWorld
jQuery在接受参数时创建函数实例。在本例中,您发送了一个选择器,它是元素的id。收到此选择器后,jquery在“internal”jquery函数上使用
new
关键字。结果是一个函数对象。每次使用
$
jQuery
时,您都要求它提供一个jQuery对象,这是向jQuery函数发出
new
的结果。这个对象附带了很多东西,包括与选择器匹配的元素数组,以及允许您访问API的jQuery原型

所以,我想澄清一下。它是一个物体。它是由一个函数构造的


编辑 下面是一些示例代码,帮助您了解这是如何发生的

首先,此演示是一个简单的jquery对象:

html

第二,这是我写的一个例子

html

您会注意到,它们记录的内容几乎完全相同。
$
中没有魔法,它只是一个字符串,很像
Y
is或
jQuery
,或
HelloWorld

否。 构造函数:函数意味着它被称为jQuery构造函数,它是使用给定的上下文选择器调用的。然后返回jQuery对象

现在car是一个jQuery对象

您可以在
car
对象上访问jQuery的所有方法。

否。 构造函数:函数意味着它被称为jQuery构造函数,它是使用给定的上下文选择器调用的。然后返回jQuery对象

现在car是一个jQuery对象

您可以在
car
对象上访问jQuery的所有方法。

请粘贴相关HTML以了解更多请粘贴相关HTML以了解更多
<div id="car"></div>
var car = $("#car");
console.log(car);
<div id="car"></div>
var $ = (function(){
    var $ = function(sel){
        if( !(this instanceof $) ){
            return new $(sel);
        }
        this.selector = sel;
        this.element = document.getElementById(sel);
        this.constructor = $;
        this.init = function(){ /*init*/ };
    };

    return $;
})();

var car = $("car");
console.log(car);