zoukankan      html  css  js  c++  java
  • call与apply方法的使用

    apply与call两种方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内的this对象的值

    apply()方法接收两个参数:①是在其中运行函数的作用域 ②参数数组(可以是Array的实例,也可以是arguments对象)

    例如:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Add Example 1</title>
    </head>
    <body>
        <script type="text/javascript">
          var a,b;
          function sum(num1,num2){
              return num1+num2;
          }
          function callSum1(num1,num2){
              console.log("callSum1");
              a=this;
              console.log(a);   //Window
              return sum.apply(this,arguments);
          }
          
          function callSum2(num1,num2){
              console.log("callSum2");
              b=this;
              console.log(b);   //Window
              return sum.apply(this,[num1,num2]);
          }
    
           alert(callSum1(10,10));  //20
           alert(callSum2(10,10));  //20
           alert(a===b);            //true   a与b都是指向同一全局对象(因为callSum1与callSum2都是在全局作用域调用)
        </script>
    </body>
    </html>

    call()方法与apply方法的作用相同,它们的区别仅在于接收参数的方式不同。对于call方法而言第一个参数是this值没有变化,变化的是其余参数都直接传递给函数(也就是说,传递给函数的参数必须逐个列举出来);

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <script>
            function sum(num1,num2){
                return num1+num2;
            }
            function callSum(num1,num2){
                return sum.call(this,num1,num2);
            }
            alert(callSum(10,10));
    
        </script>
    </body>
    </html>
  • 相关阅读:
    连续时间单位冲激信号δ(t)的基本性质
    数据结构练习
    数据结构练习
    数据结构练习
    使用 matplotlib 绘制带日期的坐标轴
    数据结构练习
    c++ primer 练习10.33_p363
    C++迭代器之'插入迭代器
    C++ 11 Lambda表达式
    《C++ Primer》读书笔记—第十章 泛型算法
  • 原文地址:https://www.cnblogs.com/jcbo/p/6744504.html
Copyright © 2011-2022 走看看