jQuery构造函数的init参数分析

在我的上一篇文章分析了jQuery构造器,jQuery对象有一个原型方法init是真正的构造函数,初始化实例可以调用由原型对象的原型对象初始化jquery jQuery正常方法使引用关系,就像jQuery的相同实例。让我们看看后面的初始化构造函数是写:


初始化:功能(选择、语境、rootjquery){



}




您可以看到,该方法接受3个参数,前两个参数是通过jQuery方法传递的。




函数(选择器,上下文){

jQuery对象实际上只是 / init constructor'enhanced

返回新的jquery.fn.init(选择器,语境,rootjquery);

},




输入任何值都可以是选择器,但并不是所有的值都是有意义的,只有未定义的、DOM、jQuery、String元素、函数对象、普通javascript对象类型都是有效的,这个参数通常是完成但不完整是没有错的。

复制代码代码如下所示:

console.log($());

构造函数,init,函数,选择器: }





上下文不能作为执行上下文或执行范围引入,也不能作为一个jQuery对象(一个常见的Javascript对象)引入到DOM元素中。

参数rootjquery:jQuery对象中包含的文档对象,为document.getelementbyid()查找失败,选择器选择器表达式,没有上下文或选择器函数指定,实际上是$(document)。

根据参数的不同分为12种情况

1.selector可以转换为false




$( ),$(NULL),或($未定义)

如果(!选择器){

返回此;

}




源代码中的注释已经写得很清楚了。当这三种情况直接返回时,没有进行处理。

2。参数选择器是DOM元素。

例如:写$(文档)


/ /处理$(domelement)

如果(选择器。节点类型){

this.context =这{ 0 } =选择器;

this.length = 1;

返回此;

}




只要有DOM元素,就必须有节点类型。然后将节点转换为jQuery对象的第一个元素并分配给上下文上下文。长度属性是jQuery的原型属性,默认值是0。

jQuery对象的默认长度是0。

长度:0,

这里我们有一个将长度属性更改为1的元素。返回此操作使函数执行的结果仍然是jQuery对象,以便像$(文档)这样的链调用。每个()都可以实现。最后类似于{ 0:文档,上下文:文档,长度:1…基本对象,最后都将成为这个表单的对象,除了jQuery属性和方法之外,DOM节点是根据阿拉伯数字序列获得原型,所以我们可以用$(选择器)代替{ 0 },以$(选择器)的形式。获取(0)获得DOM对象:




























console.log($('div '));

/ * { DIV,DIV,DIV,prevobject:jQuery。FN。jQuery。init { 1 },背景:文件选择器:div}

0:DIV
1:DIV
2:DIV
背景:文件
长度:3
prevobject:jQuery。FN。jQuery。init { 1 } __proto__:jQuery { 0 }
选择器:div

* /








3。参数是一个特殊字符串体。

因为体元素在文档对象中只有一个,所以它被单独列出。




体元素只存在/一旦优化找到它

如果(选择器上下文!文档(正文){

this.context =文件;

这{ 0 } = document.body;

this.selector =选择器;

this.length = 1;

返回此;

}




有3个条件必须同时满足。第二必须没有上下文。我不太懂。对体(文档)的看似正常的书写也被忽略了。




console.log($('body文件));

*

1

0:身体

背景:文件

长度:1

prevobject:jQuery。FN。jQuery。init { 1 }

选择器:

__proto__:jQuery { 0 }

* /




虽然结果是一样的,('body美元),它被视为两个案例。也许是因为身体只有一个上下文,只能是文件。这是没有必要添加它,否则它将决定是否上下文文件或没有。第三个条件是确保document.body必须存在,那么在什么情况下,第一个条件就不存在满足document.body首先,在加载HTML代码之前,加载js代码,这是初学者经常犯的错误,通常我们要编写:

$(函数(){…})

也许

$(文档)Ready(函数(…){ })



事实上,这两种方法是相同的方法,DOM在分析之后加载这一部分:
















$('body)



















然后选择,背景,和document.body在jQuery源码输出




console.log(选择器+背景+文档。体);

体元素只存在/一旦优化找到它

如果(选择器上下文!文档(正文){

this.context =文件;

这{ 0 } = document.body;

this.selector =选择器;

this.length = 1;

返回此;

}




虽然我们只写了一个,但实际上执行了四次。最后一次是我们打电话后的结果。最后的结果是bodyundefinednull。第一个是满意的,但最后一个是空的。回想起第一个JQuery框架结构,定义将要重建,所以将document.body被改写为空当我尝试修改代码时,它似乎并没有错,这就是防止HTML加载的条件。

第四个是字符串,而不是上面提到的字符串,而在下一个字符串中的情况更多。

以上是本文的全部内容,希望大家能喜欢。