我们先来介绍一下apply方法的基本用法。apply方法是JavaScript中的一种函数方法,在调用函数时,可以指定函数内部this关键字指向的对象,并且可以传入一个类数组对象作为函数的参数。apply方法的语法如下:
// functionName为需要调用的函数名
// obj为函数内this关键字指向的对象
// argArray为传入函数的参数数组
functionName.apply(obj, argArray);
下面我们来看一些apply方法的应用技巧:
1. 利用apply将数组的最大值或最小值传给Math.max/Math.min函数
在JavaScript中,Math.max函数可以求出多个数中的最大值,Math.min函数可以求出多个数中的最小值。但是,如果我们有一个数组,想要求出其中的最大值或最小值,该怎么办呢?这时就可以运用apply方法了。
我们定义一个数组arr,我们可以用apply方法将arr的最大值传给Math.max函数,也可以将最小值传给Math.min函数。示例代码如下:
var arr = [1, 2, 3, 4, 5];
console.log(Math.max.apply(Math, arr)); //输出5
console.log(Math.min.apply(Math, arr)); //输出1
2. 利用apply方法改变函数内部this的指向
在JavaScript中,函数的执行环境内部有一个this对象。this对象指向的是函数正在执行的上下文对象。通常情况下,this对象默认指向全局对象,即在浏览器中指向window对象,在Node.js中指向global对象。但是,在某些情况下,我们需要改变函数内部this对象的指向。这时,apply方法的第一个参数就派上用场了。
下面我们举一个例子。假设我们要写一个Person类,类属性包括姓名和年龄等,类方法包括讲英文和讲中文两种方法。我们可以用apply方法将讲话方法内部的this指向实例对象,并且将对应语言作为参数传入。示例代码如下:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function(lang) {
if (lang === 'en') {
console.log(`Hello, my name is ${this.name}, I'm ${this.age} years old.`);
} else if (lang === 'cn') {
console.log(`你好,我的名字是${this.name},我今年${this.age}岁了。`);
}
};
var p1 = new Person("小明", 25);
var p2 = new Person("Lucy", 20);
p1.sayHello.apply(p1, ['cn']); // 输出:你好,我的名字是小明,我今年25岁了。
p2.sayHello.apply(p2, ['en']); // 输出:Hello, my name is Lucy, I'm 20 years old.
这样我们就用apply方法改变了Person类中sayHello方法内部的this指向,并成功调用。这种技巧在日常开发中经常使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中apply方法的应用技巧小结 - Python技术站