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>  
相关推荐
前端 贾公子14 分钟前
第 5 章:Codex 从可运行程序到可交付工具
java·前端·数据库
一切皆是因缘际会22 分钟前
当模型足够大
人工智能·深度学习·机器学习
用户3600555790037 分钟前
Kestrel_VLLM - 26 · 发射空档三步曲:事件计时 → nsys → 判别实验
前端
echome88842 分钟前
JavaScript async/await 错误处理:别让 Promise 静默失败
开发语言·前端·javascript·promise
PedroQue991 小时前
v0.2.0 架构升级:class + reactive 重塑状态管理
前端·uni-app
鶴哥只手遮天1 小时前
Angular 22 源码级深度解析-第 02 章 编译链路总览:从模板字符串到 `ɵɵ` 指令
前端·开源·angular.js
尘世中一位迷途小书童1 小时前
别再堆万字 Prompt:用 Agent Skills 给团队写一个「前端 Review」Skill
前端·ai编程·cursor
aixingpan1 小时前
aixingpan.cn API开发文档:api_docs_bichart_common2接口指南
前端·php
super_Omni1 小时前
text/PDF/Word → 解析成纯文本 → 分词 → 词表匹配 → 加权打分 → 低于阈值
前端·chrome
阶进遐1 小时前
浏览器工具自制指南·对话导出(3):消息池设计
前端