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

时间:2013-02-14 05:46:29

标签: javascript jquery

我打电话给一个像这样的汽车ID的div:

var car = $('#car');
console.log(car);

当我记录它时,它会在控制台中以这样的方式返回:

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

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

2 个答案:

答案 0 :(得分:1)

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

所以,只是澄清一下。这是一个对象。它是由一个函数构建的。


修改

以下是一些示例代码,可帮助您了解如何实现此目标。

首先,此演示是一个简单的jquery对象:http://jsfiddle.net/PbdCt/

HTML

<div id="car"></div>

JS

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

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

HTML

<div id="car"></div>

JS

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);

您会注意到它们都记录了几乎完全相同的东西。 $中没有魔法,它只是一个字符串,非常像YjQueryHelloWorld

答案 1 :(得分:0)

没有。 构造函数:函数意味着它调用了jQuery构造函数,并使用给定的上下文,选择器进行调用。它返回jQuery对象。

现在car是一个jQuery对象。

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