(1)直接调用函数:直接调用函数是最常见、最普通的方式。这种方式直接以函数附加的对象作为调用者,在函数后括号内传入参数来调用函数。这种方式是前面最常见的调用方式。
当程序使用window对象来调用方法时,可以省略方法前面的window调用者。
(2)以call()方法调用函数:直接调用函数的方式简单、易用,但这种方式不够灵活。有些时候调用函数时需要动态地传入一个函数引用,此时为了动态地调用函数,就需要使用call方法来调用函数了。
上面程序中粗体字代码示范了通过call()动态地调用函数,从调用语法来看,不难发现通过call()调用函数的语法格式为:
由此可以得到直接调用函数与通过call()调用函数的关系如下:
调用者.函数(参数1,参数2,...)=函数.call(调用者,参数1,参数2...)
apply()方法与call()方法的功能基本相似,它们都可以动态地调用函数。apply()与call()的区别如下:
①通过call()调用函数时,必须在括号中详细地列出每个参数。
②通过apply()动态地调用函数时,可以在括号中以arguments来代表所有参数。
解释代码:当通过call()动态地调用方法时,需要为被调用方法逐个地传入参数;当通过apply()动态地调用方法时,能以arguments一次性地传入多个参数。需要指出,arguments可以代表调用当前函数时传入的所有参数,因此arguments相当于一个数组,所以上面程序在①号代码处使用数组代替了arguments。