JS中apply()的应用实例分析
什么是apply()?
JS中的apply()是Function对象自带的一个方法,它的作用是调用函数并将对象作为第一个参数进行传递,第二个参数是一个包含传递给函数的参数的数组。
语法:function.apply(thisArg, [argsArray])
- thisArg:在函数中某个对象将被用作“this”对象。
- argsArray:要传递给函数的参数的数组
apply()的应用实例
实例1:最大值、最小值
通过apply()方法和Math.max()或Math.min(),可以求得数组中的最大值和最小值。
var arr = [1, 2, 3, 4, 5];
var max = Math.max.apply(null, arr);
var min = Math.min.apply(null, arr);
console.log(max); //5
console.log(min); //1
Math.max.apply(null, arr)
方法调用时,apply()中的参数null可以让Math.max()函数里的this指向默认的全局对象,也就是window对象。而第二个参数arr则被传递到Math.max()中,此时Math.max()函数将取得数组arr的最大值并返回。
实例2:强制执行继承
call()和apply()方法可以强制执行继承。
function Animal() {}
function Cat() {}
Animal.prototype.showInfo = function() {
console.log("我是动物");
}
Cat.prototype.showInfo = function() {
console.log("我是猫");
}
var a = new Animal();
var c = new Cat();
a.showInfo.apply(c); //我是猫
以Cat对象的身份调用Animal对象中的showInfo()方法,最终打印出结果“我是猫”,这表明apply()方法指定了函数中的this对象。
总结
apply()方法的主要作用是继承父类,以及求最大值、最小值等操作。它的特点是:
- 可以将值的作用域从一个对象转移到另一个对象。
- 可以在不构造整个函数对象的情况下,以一个指定对象构造一个参数数组并调用函数。
在使用apply()的时候需要注意的是,如果apply()中的第一个参数为null或undefined,则默认使用全局对象作为this进行调用,即this指向window对象。而且,apply()方法将参数数组展开后作为参数传递,所以,在调用方法的时候,需要注意数组的长度,如果数组非常大,在传参时会给服务器带来很大的负担。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS中apply()的应用实例分析 - Python技术站