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>  
相关推荐
橙序员小站37 分钟前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
炫饭第一名3 小时前
速通Canvas指北🦮——基础入门篇
前端·javascript·程序员
王晓枫3 小时前
flutter接入三方库运行报错:Error running pod install
前端·flutter
符方昊3 小时前
React 19 对比 React 16 新特性解析
前端·react.js
ssshooter3 小时前
又被 Safari 差异坑了:textContent 拿到的值居然没换行?
前端
曲折4 小时前
Cesium-气象要素PNG色斑图叠加
前端·cesium
Forever7_4 小时前
Electron 淘汰!新的桌面端框架 更强大、更轻量化
前端·vue.js
Angelial4 小时前
Vue3 嵌套路由 KeepAlive:动态缓存与反向配置方案
前端·vue.js
jiayu4 小时前
Angular学习笔记24:Angular 响应式表单 FormArray 与 FormGroup 相互嵌套
前端
jiayu4 小时前
Angular6学习笔记13:HTTP(3)
前端