javascript函数调用的四个规则

javascript函数调用的四个规则

ID:13566120

大小:42.50 KB

页数:5页

时间:2018-07-23

javascript函数调用的四个规则_第1页
javascript函数调用的四个规则_第2页
javascript函数调用的四个规则_第3页
javascript函数调用的四个规则_第4页
javascript函数调用的四个规则_第5页
资源描述:

《javascript函数调用的四个规则》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、JavaScript函数调用的四个规则JavaScript函数调用规则一(1)全局函数调用:functionmakeArray(arg1,arg2){return[this,arg1,arg2];}这是一个最常用的定义函数方式。相信学习JavaScript的人对它的调用并不陌生。调用代码如下:makeArray('one','two');//=﹥[window,'one','two']这种方式可以说是全局的函数调用。为什么说是全局的函数?因为它是全局对象window的一个方法,我们可以用如下方法验证:alert(typeofwindow.methodTh

2、atDoesntExist);//=﹥undefinedalert(typeofwindow.makeArray);//=﹥function所以我们之前调用makeArray的方法是和下面调用的方法一样的window.makeArray('one','two');//=﹥[window,'one','two']JavaScript函数调用规则二(1)对象方法调用://creatingtheobjectvararrayMaker={someProperty:'somevaluehere',make:makeArray};arrayMaker.make('o

3、ne','two');    //=﹥[arrayMaker,'one','two']//或者用下面的方法调用:arrayMaker['make']('one','two'); //=﹥[arrayMaker,'one','two']看到这里跟刚才的区别了吧,this的值变成了对象本身.你可能会质疑:为什么原始的函数定义并没有改变,而this却变化了呢?非常好,有质疑是正确的。这里涉及到函数在JavaScript中传递的方式, 函数在JavaScript里是一个标准的数据类型,确切的说是一个对象.你可以传递它们或者复制他们.就好像整个函数连带参数列表和函

4、数体都被复制,且被分配给了arrayMaker里的属性make,那就好像这样定义一个arrayMaker:vararrayMaker={someProperty:'somevaluehere',make:function(arg1,arg2){return[this,arg1,arg2];}};如果不把调用规则二弄明白,那么在事件处理代码中经常会遇到各种各样的bug,举个例子:﹤inputtype="button"value="Button1"id="btn1" /﹥﹤inputtype="button"value="Button2"id="btn2" 

5、/﹥﹤inputtype="button"value="Button3"id="btn3" onclick="buttonClicked();"/﹥﹤scripttype="text/javascript"﹥functionbuttonClicked(){vartext=(this===window)?'window':this.id;alert(text);}varbutton1=document.getElementById('btn1');varbutton2=document.getElementById('btn2');button1.oncl

6、ick=buttonClicked;button2.onclick=function(){   buttonClicked();   };﹤/script﹥  点击第一个按钮将会显示”btn1”,因为它是一个方法调用,this为所属的对象(按钮元素)。点击第二个按钮将显示”window”,因为buttonClicked是被直接调用的(不像obj.buttonClicked()),这和第三个按钮,将事件处理函数直接放在标签里是一样的.所以点击第三个按钮的结果是和第二个一样的。所以请大家注意:button1.onclick=buttonClicked;but

7、ton2.onclick=function(){   buttonClicked();   };this指向是有区别的。JavaScript函数调用规则三当然,如果使用的是jQuery库,那么你不必考虑这么多,它会帮助重写this的值以保证它包含了当前事件源元素的引用。//使用jQuery$('#btn1').click(function(){alert(this.id);//jQueryensures'this'willbethebutton});那么jQuery是如何重载this的值的呢?答案是:call()和apply();当函数使用的越来越多时,

8、你会发现你需要的this并不在相同的上下文里,这样导致通讯起来异常困难。在Jav

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。