JS中的apply和arguments小练习

xml 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>apply和arguments</title>
</head>
<body>
<!-- 用JS求数组中的最小值和最大值的练习 -->
 <!-- apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性.  
 Function.apply(obj,args)方法能接收两个参数  
 obj:这个对象将代替Function类里this对象  
 args:这个是数组,它将作为参数传给Function(argsarguments) -->
<!--  apply的一个巧妙的用处,可以将一个数组默认的转换为一个参数列表([param1,param2,param3] 转换为 param1,param2,param3) 这个如果让我们用程序来实现将数组的每一个项,来装换为参数的列表,
可能都得费一会功夫,借助apply的这点特性,所以就有了以下高效率的方法 -->
</body>
  <script type="text/javascript">
    var arr=[2,4,1,5,8,-6,-4,6]
    function getMin(){
    var num=0;
    for(var i=0;i<arguments.length;i++){
           if(arguments[i]<num){
             num=arguments[i];
           }
    }
    alert(num);
    }
    getMin.apply(window,arr);
  /*  Math.max 可以实现得到数组中最大的一项  
  
      因为Math.max 参数里面不支持Math.max([param1,param2]) 也就是数组  
  
      但是它支持Math.max(param1,param2,param3...),所以可以根据刚才apply的那个特点来解决 var max=Math.max.apply(null,array),这样轻易的可以得到一个数组中最大的一项  
  
       (apply会将一个数组装换为一个参数接一个参数的传递给方法)  
  
         这块在调用的时候第一个参数给了一个null,这个是因为没有对象去调用这个方法,我只需要用这个方法帮我运算,得到返回的结果就行,.所以直接传递了一个null过去 */


        /* 另一种方法来拿到数组中的最小值*/
         function min(){
           return Math.min.apply(null,arr);
         }
         alert(min());


         /*arguments 对象
          在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。
例  如,在函数 sayHi() 中,第一个参数是 message。用 arguments[0] 也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,第二个参数位于位置 1,依此类推)。
因此,无需明确命名参数,就可以重写函数:*/




  /*还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。*/


  /*注释:与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据 Netscape 的文档,最多可接受 255 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。*/
  </script>
</html>  
相关推荐
收到求救信号44 分钟前
MAD-TD: MODEL-AUGMENTED DATA STABILIZES HIGH UPDATE RATIO RL
人工智能·深度学习·机器学习
Kay_Liang1 小时前
深入解析JavaScript变量作用域:var、let、const全攻略
开发语言·javascript·const·var
未脱发程序员1 小时前
【前端】每日一道面试题3:如何实现一个基于CSS Grid的12列自适应布局?
前端·css
三天不学习1 小时前
Visual Studio Code 前端项目开发规范合集【推荐插件】
前端·ide·vscode
t2007181 小时前
5.8 react状态管理
javascript·react.js·ecmascript
Francek Chen1 小时前
【现代深度学习技术】注意力机制04:Bahdanau注意力
人工智能·pytorch·深度学习·神经网络·注意力机制
爱分享的程序猿-Clark1 小时前
【前端分享】CSS实现3种翻页效果类型,附源码!
前端·css
Code哈哈笑1 小时前
【图书管理系统】深度讲解:图书列表展示的后端实现、高内聚低耦合的应用、前端代码讲解
java·前端·数据库·spring boot·后端
无名之逆2 小时前
Hyperlane: Unleash the Power of Rust for High-Performance Web Services
java·开发语言·前端·后端·http·rust·web
数据潜水员2 小时前
`待办事项css样式
前端·css·css3