zoukankan      html  css  js  c++  java
  • 简述Javascript中call apply

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    2 <html>
    3 <head>
    4 <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
    5 <title>Insert title here</title>
    6 </head>
    7 <body>
    8 <input type="text" id="testCall" onclick="test()">
    9
    10 </body>
    11 <script type="text/javascript">
    12 function add(a,b)
    13 {
    14 this.name = 'add';
    15 alert(a+b);
    16 alert(this.name);
    17 }
    18
    19 function sub(a,b)
    20 {
    21 this.name = 'sub';
    22 alert(a-b);
    23 alert(this.name);
    24 }
    25
    26 function test()
    27 {
    28 add.call(sub,3,1);
    29 }
    30 </script>
    31 </html>

    在为dom元素添加事件时会用到

    call体现了javascript的动态语言性质(周爱明老师书上有讲,犀牛书也讲到了)

    通过call也可以实现javascript的继承

    解释下28行

    结果是4  然后 sub

    其实相当于调用了add这个方法,并将3和1这两个参数传给add方法

    但是要注意的是 还有个额外的 第一个参数sub

    这个参数是指调用add时 涉及到的this指向谁,这里指向sub

    如果你要他指向自身(add),那么第一个参数(sub那位置)传null也是可以的

    apply与call不一样的是

    是在接受的参数方面

    第一个参数是与call一样的

    只是apply方法后面接受一个数组,而不是像call那样展开写的参数列表

    扩展阅读:

    javascript添加事件。兼容火狐IE

    http://luoyahu.iteye.com/blog/680147

    建议 第八行代码写成

     handler.call(null,argsObject, e); 



  • 相关阅读:
    快速掌握一个语言最常用的50%[转]
    技术路线的选择重要但不具有决定性 [转]
    图形、图像国外期刊 [转]
    SessionHelper.cs(20170223)
    PageHelper.cs(20170223)
    FileDown.cs(20170223)
    EncryptionHelper.cs(20170223)
    CookieHelper.cs(20170223)
    ConvertJson.cs(20170223)
    ConvertHex.cs(20170223)
  • 原文地址:https://www.cnblogs.com/simoncook/p/2308077.html
Copyright © 2011-2022 走看看