首页 > 编程 > JavaScript > 正文

JavaScript call()和apply()方法

2019-11-11 07:26:10
字体:
来源:转载
供稿:网友
我们可以将call()和apply()方法看做是某一个对象的方法,通过调用方法的形式来间接调用函数。call()和apply()的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对它的引用。要想以对象o的方法来调用函数f(),可以这样使用call()和apply():f.call(o);f.apply(o);每行代码和下面的代码功能类似(假设对象o中预先不存在名为m的属性):o.m = f;      //将f存储为o的临时方法o.m();         //调用它,不传入参数delete o.m;  //删除临时方法对于call()来说,第一个调用上下文实参之后的所有实参就是要传入待调用函数的值。比如,以对象o的方法的形式调用函数f(),并传入两个参数,可以使用这样的代码:f.call(o, 1, 2);apply()方法和call()类似,但传入实参的形式和call()有所不同,它的实参都放入一个数组当中:f.apply(o, [1, 2]);如果一个函数的实参可以是任意数量,给apply()传入的参数数组可以是任意长度的。比如,为了找出数组中最大数值的元素,调用Math.max()方法的时候可以给apply()传入一个包含任意个元素的数组:var biggest = Math.max.apply(Math, arr_of_numbers);需要注意的是,传入apply()的参数数组可以是类数组对象也可以是真实数组。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表