我正在调用一个 ID 为 car 的 div,如下所示:
var car = $('#car');
console.log(car);
当我记录它时,它会在控制台中像这样返回:
[div#car, context: document, selector: "#car", jquery: "1.9.0", constructor: function, init: function…]
日志的“构造函数:函数”部分是否告诉我它已作为函数存储,如果是,为什么以及如何将其存储为对象?
我正在调用一个 ID 为 car 的 div,如下所示:
var car = $('#car');
console.log(car);
当我记录它时,它会在控制台中像这样返回:
[div#car, context: document, selector: "#car", jquery: "1.9.0", constructor: function, init: function…]
日志的“构造函数:函数”部分是否告诉我它已作为函数存储,如果是,为什么以及如何将其存储为对象?
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。
没有。constructor:function 表示它调用了 jQuery 构造函数,在给定的上下文中调用,选择器。它返回 jQuery 对象。
现在 car 是一个 jQuery 对象。
car您可以在对象上访问 jQuery 的所有方法。