手机版

从JQuery源代码分析JavaScript函数的应用方法和调用方法

时间:2021-09-09 来源:互联网 编辑:宝哥软件园 浏览:

最近,当使用$。jQuery的每一个方法,我突然想到了$。每个($ ('div ')、函数(索引、实体){ });这个索引和实体是从哪里出来的,可有可无,这么高的索引可以告诉我们当前遍历的下标和实例。所以我看了一下jQuery源代码,它是这样写的:

调试的时候拿着红色标注的代码,然后使用了callback.call函数,所以我就翻看了一下《js高级程序设计》,有更深层次的解释。

首先,函数是指向函数的对象,函数名是指向函数的指针。那么在函数体中,就会有一个范围,就是这个关键字。

这个关键字指的是函数运行的范围。例如,复制代码如下:脚本类型=' text/JavaScript '函数funca(){ alert(this);警报(“功能A”);}/脚本

上面代码中的funcA函数是在全局环境中定义的,所以这个在函数体中就是窗口对象。

现在是解释通话和申请的时候了。以调用函数为例。调用的第一个参数是更改函数的范围。以下参数是传入函数的必需参数,必须与原始函数的参数相同。例如,复制代码的代码如下: Script Type=' text/JavaScript ' vartesto={ name 3360 ' lily ' };函数funcA(a,b){ alert(this);警报(“功能A”);}

funcB函数(a,b) { funcA.call(testO,a,b);}

funcB(1,2);//这就变成了testO/脚本

当我们定义funcB函数时,我们调用了funcA的调用函数。此时,我们在funcA中改变了这一点,原来指向窗口,现在指向对象testO,调用的第一个参数。而且,在调用call的时候,因为funcA函数有两个参数,如果想让funcA传递参数,就必须逐个指出参数,也就是后面的两个参数a和b,否则只能穿第一个参数

即:funca . call(testo);或者只传递一个,也就是FucA . call(Testo,a);

apply和call唯一的区别就是apply的第二个参数可以是数组形式,不需要逐个指出参数,funcA.apply(testO,[a,b])

在介绍了call和apply的基本用法之后,是时候谈谈他们兄弟的真正用法,并扩展函数运行的范围了。

复制的代码如下: Script Type=' text/JavaScript ' window . color=' transparent ';var TestObj={ color : ' red ' };

函数TestFuc(){ alert(this . color);}

$(function(){ 1 . TestFuc();//弹出“透明”2.testFuc(这个);//“未定义”弹出3。testfuc。叫(这个。父母);//“透明”弹出4.testFuc.call(窗口);//“透明”弹出5 . TestFuc . call(TestObj);//“红色”弹出});/script

上面的代码演示了调用的功能。第一个函数调用,这个指向窗口,所以窗口的颜色属性弹出来了。

有些朋友可能认为第二个函数会弹出透明,但请确保我们的函数运行在$(function(){ });在,这个jQuery函数,了解jQuery的朋友都很清楚,在

$(function(){ });这个的范围指向文档,然后我们调用testFunc弹出文档的颜色,当然是未定义的。

第三个函数把testFunc的这个指向文档的父窗口,弹出窗口的颜色当然没问题。

第四个函数甚至更简单,在窗口中传递。

第五个函数将testFunc指向testObj,以红色弹出。

在这一点上,我们都应该知道用法,但是如何理解和使用它取决于我们自己的套路。

我是这样理解的。我可以把这种用法看作C#或java中的一种通用方法。比如C#方法的定义。

复制的代码如下:public void TestT(T a,T b) {}

这样就可以扩展方法,达到通用的目的。

以上都是我自己的看法和看法。请指出错在哪里,一起学习。

版权声明:从JQuery源代码分析JavaScript函数的应用方法和调用方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。