我正在尝试通过查看某些网站的源代码来学习jquery / javascript。我对那里使用的语法有点不确定:
!function(t) {
"use strict";
function e() {
var e = parseInt(t(window).scrollTop()),
n = 10;
e > n ? a.addClass("new-class") : (a.removeClass("new-class"), t(".sclass").removeClass("fclass"))
}
//...more codes...
}(jQuery),
我只是不知道那里到底是什么意思。是“这个”还是只是任何事件对象? t(窗口)是什么意思?我以为它应该像t.window?因为t不是函数。
谢谢! 萨尔德奇
答案 0 :(得分:3)
t
是对该函数范围内的jQuery
对象的引用。注意函数是如何调用的:
!function (t) {
// "t" is the jQuery object
}(jQuery);
定义函数,然后使用参数jQuery
立即调用。因此,在调用函数时,传递的参数将存储在变量t
中。你可以说出任何名字,真的:
!function (foo) {
// "foo" is the jQuery object
}(jQuery);
答案 1 :(得分:0)
该函数是内联定义的,因此它没有名称,并且使用param jQuery调用immediatley。 “t”是内联函数的形式参数,它通过具体参数“jQuery”解析。
很快,变量t
引用jQuery
对象(或任何jQuery变量保存)。
答案 2 :(得分:0)
这相当于:
function x(t) {
//code in here
}
x(jQuery);
因此,t
是jQuery
函数中的本地引用。
并且, t(window)
相当于jQuery(window)
...并且扩展名为$(window)
。
答案 3 :(得分:0)
将此代码插入函数e()
:
console.log(t === jQuery);
您将在该函数中断言t
确实是jQuery
别名。
答案 4 :(得分:0)
如上所述,在这种情况下,t等于jquery对象。 t(window)表示用jquery对象包装window对象,所以在包装之后,我可以在它上面调用jquery方法。我确定你已经熟悉了jquery的$(选择器)方法,它做了同样的事情(足够公平)。
因此,$('#product')
应该使用id " product" 获取DOM元素并将其包装在jquery对象中。
示例强>:
var myProduct = document.querySelector('#product');
myProduct.attr('id'); // error, myProduct doesn't have method attr() because it is not a jquery "instance"
$(myProduct).attr(id); // product, we wrapped the item in a jquery object
由于jquery在您的示例中被命名为 t ,因此t(window)
将窗口对象包装在jquery中。窗口对象通常没有定义scrollTop()
方法。