zoukankan      html  css  js  c++  java
  • 分析apply,call方法

    Math.min.apply(null,arr) 这种方法用于求一个数组中的最小值,这令我很困惑,我不知道为甚么apply的第一个参数为什么重新传入Math对象

    我打算从两点进行分析

    1.Math.min()

    2.apply,call方法

    先是一:

    Math.min中可以获取一串数字的最小值,格式为:Math.min(1,2,6,10,0,4)

    这样可以直接获取最小的数,请注意是这种格式的写法,因为我们的需求是从数组中寻找

    我们大概了解了其一

    然后二:

    apply和call方法是改变this指向

    举个例子:

            var obj = {
                age:20,
                sayAge:function () {
                    console.log(this.age)
                }
            }
            obj.sayAge() //是obj中的20
    
            var obj2 = {
                age:1000
            }
            obj.sayAge.call(obj2) //是obj2中的1000

    call和apply方法就是在原有的方法上改变了this的指向,变成了括号内那个对象

    call和apply两者区别就是前者直接写参数,后者是数组

    obj.sayAge.call(obj2,1,2,3)

    obj.sayAge.call(obj2,[1,2,3])

    但是这些并没有解决我想要的问题

    call和apply除了改变函数的this指向外,还有什么?---apply可以改变传递给函数参数的形式

    function fn(arg1,arg2,arg3,...){
    //....
    }

    fn(1,2,3)

    fn.apply.(null,[1,2,3])

    apply改变了参数的传入形式

    网上的资料众多纷纭,根本找不到我想要的结果,

    希望大家见谅并积极指出...

  • 相关阅读:
    lower版购物车模拟
    字典的增删改查和操作
    生成四位验证码
    列表的增删改查和操作
    根据输入字符串,分别计算大写,小写,数字,标点的个数
    检查一个数是不是质数
    非诚勿扰,选心动女生(小游戏)
    汉诺塔的实现
    一个纯虚函数导致的问题
    Hello World 之 CGAL
  • 原文地址:https://www.cnblogs.com/xufeng1994/p/10419579.html
Copyright © 2011-2022 走看看