实际上,jquery只是js写出来的对象,或者称工厂(产生新的对象)
jquery源码中的定义可以理解为 var jQuery = $ = function($){ } (jQuery)
即,function参数为形参,function后的括号内的内容为实参,实参赋值给形参
在你给出的例子中,可以断言肯定已经引入了jquery,故其实$已经被赋值为jQuery对象,因此这个函数是将jquery作为参数传进函数内部,作为jquery的代名词。
可能你要问为什么要这么做,直接用$不是很好么?这有一种可能是不止引入了jquery,还引入了prototype(也是使用$作为工厂符号)之类的,为防混淆如此做。
这样做其实是因为js编程中的封装,防止变量污染其他作用域,使得$只作用于这个函数。
但我感觉这样写的不是很好,如果换成
jQuery(function(jQuery){var $ = jQuery;
//alert($);
var index = 0;
var maximg = 5;
……
}
这样会更好点,也更好理解。
(function(){})表示一个匿名函数。function(arg){}定义了一个参数为arg的匿名函数,然后使用(function(arg){})(param)来调用这个匿名函数。其中param是传入这个匿名函数的参数。
扩展资料:
需要注意与$(function(){})的区别:$(function(){}) 是 $(document)ready(function(){}) 的简写,用来在DOM加载完成之后执行一系列预先定义好的函数。
jQuery的模块可以分为3部分:入口模块、底层支持模块和功能模块。
在构造jQuery对象模块中,如果在调用构造函数jQuery()创建jQuery对象时传入了选择器表达式,则会调用选择器Sizzle(一款纯JavaScript实现的CSS选择器引擎,用于查找与选择器表达式匹配的元素集合)遍历文档,查找与之匹配的DOM元素,并创建一个包含了这些DOM元素引用的jQuery对象。
参考资料:
1
首先(function(){})()这种写法
是创建了一个匿名的方法并立即执行(function(){})这个是匿名方法后面的括号就是立即调用了这个方法)。
这样做可以创建一个作用域以保证内部变量与外部变量不发生冲突,比如$
jQuery
等jquery内部定义的变量。
2
(function($){})(jQuery)
这个写法主要的作用还是保证jquery不与其他类库或变量有冲突
首先是要保证jQuery这个变量名与外部没有冲突(jquery内部$与jQuery是同一个东西
有两个名字的原因就是怕$与其他变量名有冲突二jQuery与其他变量冲突的几率非常小)并传入匿名对象,匿名对象给参数起名叫做$(其实和jquery内部是一样的)
然后你就可以自由的在(function($){})(jQuery)里写你的插件而不需要考虑与外界变量是否存在冲突
1、jquery选择器$('selector')返回的不是数组,而是封装好的jquery对象。但这个对象有一个特别的地方,就是查询到的节点被以下标为属性,添加到了jquery对象上,所以它看起来像数组,因为它存在一些属性是数字;\x0d\\x0d\2、jquery对象有哪些属性和方法?\x0d\我们可以理解,$('selector')返回了一个对象obj,obj[0]obj[i]总是返回查询到的第i个节点。除此之外,jquery对象还被通过prototype添加了一些方法,即:\x0d\jQueryprototypeeach = function(){}\x0d\jQueryprototypehasClass = function(){}\x0d\jQueryprototypehide = function(){}\x0d\jQueryprototypecss = function(){}\x0d\jQueryprototypeattr = function(){}\x0d\等等。这样的话,$('selector')返回的对象就可以调用这些方法,比如objattr('name')、objcss('color', 'red')。\x0d\\x0d\\x0d\3、jquery方法如何处理多个节点?\x0d\实际上,以上诸如hide、css、attr等方法,在jquery内部都是通过循环来处理各个节点的。但是,如果是要获取节点属性,比如objattr('name'),显然这个只能返回一个字符串,所以类似的方法都是获取节点集合中的第一个节点的属性。也就是说,虽然返回的节点很多,但只有第一个会被处理。\x0d\\x0d\4、为什么jquery可以链式调用?\x0d\在jquery中,很多同名的方法通过参数个数的不同实现不同的功能,比如css方法,如果传一个参数则表示获取css属性;如果传两个参数,则表示给节点添加某个属性,并赋值为第二个参数。attr、width等也是这样的处理。对于方法的返回值,除了获取属性值、获取css值等需要返回实际值的方法外,当css方法、attr方法表示为为节点添加属性、css样式时,是不需要返回值的,但jquery让这些方法返回了this,也就是返回了调用者自身,所以可以链式调用。
欢迎分享,转载请注明来源:表白网
评论列表(0条)