JavaScript中apply()函数的用途是什么?

传统上,我们的对象具有自己独特的方法 属性。使用apply()函数,我们可以构造一个可以访问所有给定对象组合的方法。

实际上,此方法与 call()函数的工作原理相同,但是当需要传递类似变量的数组时,apply()函数就会出现。

在以下示例中,分别调用了多个元素,因此无需使用apply()函数,而使用了call()函数。

示例

<html>
<body>
   <script>
      var obj = {num : 10};
      var mul = function(i, j, k){
         return this.num * i*j*k;
      }
      document.write(mul.call(obj,6,3,4));
   </script>
</body>
</html>

输出结果

720

在下面的示例中,当传递数组 时,而不是单个元素,则call()函数返回了NaN, apply()函数返回了一个值。这是因为call()函数无法访问数组。 

示例

<html>
<body>
   <script>
      var obj = {num : 10};
      var mul = function(i, j, k){
         return this.num * i*j*k;
      }
      var array = [6,3,4]
      document.write(mul.call(obj,array));
      document.write("</br>");
      document.write(mul.apply(obj,array));
   </script>
</body>
</html>

输出结果

NaN
720