1

我正在调用一个 ID 为 car 的 div,如下所示:

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

当我记录它时,它会在控制台中像这样返回:

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

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

4

2 回答 2

1

jQuery 在接受参数时创建函数实例。在这种情况下,您发送了一个选择器,它是元素的 id。收到此选择器后,jquery 使用new“内部”jquery 函数上的关键字。结果是一个函数对象。每次您使用$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);

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

于 2013-02-14T05:49:45.310 回答
0

没有。constructor:function 表示它调用了 jQuery 构造函数,在给定的上下文中调用,选择器。它返回 jQuery 对象。

现在 car 是一个 jQuery 对象。

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

于 2013-02-14T05:52:06.267 回答