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>  
相关推荐
Highcharts.js15 小时前
【Highcharts】如何用命令行渲染导出图片?
javascript·导出·开发文档·highcharts·命令行渲染·命令行功能
会一丢丢蝶泳的咻狗15 小时前
Sass实现,蛇形流动布局
前端·css
攀登的牵牛花15 小时前
前端向架构突围系列 - 状态数据设计 [8 - 4]:有限状态机 (FSM) 在复杂前端逻辑中的应用
前端
Lsx_15 小时前
前端视角下认识 AI Agent 和 LangChain
前端·人工智能·agent
Yeats_Liao15 小时前
评估体系构建:基于自动化指标与人工打分的双重验证
运维·人工智能·深度学习·算法·机器学习·自动化
陈振wx:zchen200816 小时前
JavaScript
javascript·js
我是伪码农16 小时前
Vue 智慧商城项目
前端·javascript·vue.js
Tadas-Gao16 小时前
缸中之脑:大模型架构的智能幻象与演进困局
人工智能·深度学习·机器学习·架构·大模型·llm
不认输的西瓜16 小时前
fetch-event-source源码解读
前端·javascript
用户390513321928816 小时前
前端性能杀手竟然不是JS?图片优化才是绝大多数人忽略的"降本增效"方案
前端