JavaScript函数调用的四个规则.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JavaScript函数调用的四个规则

JavaScript函数调用的四个规则 JavaScript函数调用规则一 (1)全局函数调用: function makeArray( arg1, arg2 ){ return [this , arg1 , arg2 ]; } 这是一个最常用的定义函数方式。相信学习JavaScript的人对它的调用并不陌生。 调用代码如下: makeArray(one, two); // =﹥ [ window, one, two ] 这种方式可以说是全局的函数调用。 为什么说是全局的函数? 因为它是全局对象window 的一个方法, 我们可以用如下方法验证: alert( typeof window.methodThatDoesntExist ); // =﹥ undefined alert( typeof window.makeArray); // =﹥ function 所以我们之前调用 makeArray的方法是和下面调用的方法一样的 window.makeArray(one, two); // =﹥ [ window, one, two ] JavaScript函数调用规则二 (1)对象方法调用: //creating the object var arrayMaker = { someProperty: some value here, make: makeArray }; arrayMaker.make(one, two);???? // =﹥ [ arrayMaker, one, two ] //或者用下面的方法调用: arrayMaker[make](one, two);? // =﹥ [ arrayMaker, one, two ] 看到这里跟刚才的区别了吧,this的值变成了对象本身. 你可能会质疑:为什么原始的函数定义并没有改变,而this却变化了呢? 非常好,有质疑是正确的。这里涉及到 函数在JavaScript中传递的方式,? 函数在JavaScript 里是一个标准的数据类型, 确切的说是一个对象.你可以传递它们或者复制他们. 就好像整个函数连带参数列表和函数体都被复制, 且被分配给了 arrayMaker 里的属性 make,那就好像这样定义一个 arrayMaker : var arrayMaker = { someProperty: some value here, make: function (arg1, arg2) { return [ this, arg1, arg2 ]; } }; 如果不把调用规则二 弄明白,那么在事件处理代码中 经常会遇到各种各样的bug,举个例子: ﹤input type=button value=Button 1 id=btn1? /﹥ ﹤input type=button value=Button 2 id=btn2? /﹥ ﹤input type=button value=Button 3 id=btn3? onclick=buttonClicked();/﹥ ﹤ script type=text/javascript﹥ function buttonClicked(){ var text = (this === window) ? window : this.id; alert( text ); } var button1 = document.getElementById(btn1); var button2 = document.getElementById(btn2); button1.onclick = buttonClicked; button2.onclick = function(){??? buttonClicked();??? }; ﹤ /script﹥?? 点击第一个按钮将会显示”btn1”,因为它是一个方法调用,this为所属的对象(按钮元素) 。 点击第二个按钮将显示”window”,因为 buttonClicked 是被直接调用的( 不像 obj.buttonClicked() ), 这和第三个按钮,将事件处理函数直接放在标签里是一样的.所以点击第三个按钮的结果是和第二个一样的。 所以请大家注意: button1.onclick = buttonClicked; button2.onclick = function(){??? buttonClicked();??? }; this指向是有区别的。 JavaScript函数调用规则三 当然,如果使用的是jQuery库,那么

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档