apply() 是 JavaScript 中函数对象的一种方法,用于设置函数体内 this 的指向和传递参数,它有两个主要用途:改变函数内部 this 的指向,以及将数组作为普通参数传递给函数,以下是详细的使用方法和示例:
改变 `this` 指向
作用
apply 的第一个参数是调用该函数时的上下文对象(即绑定到函数内部的 this 上的对象),第二个参数是一个数组或类数组对象,表示传递给函数的参数。
示例
var person = { fullName: function() { return this.firstName + " " + this.lastName; } }; var person1 = { firstName: "Bill", lastName: "Gates" }; person.fullName.apply(person1); // 将返回 "Bill Gates"
在这个例子中,person.fullName
方法被应用到person1
对象上,从而改变了函数内部的this
指向。
将数组作为普通参数传递给函数
作用
当一个函数的入参是非数组,而你拥有的是数组时,可以使用 apply 来处理这种情况,Math.max 函数可以接受多个参数,但不接受数组作为参数,此时可以用 apply 来实现这一功能。
示例
Math.max(1, 2, 3); // 3 // 如果使用数组作为参数 Math.max.apply(null, [1, 2, 3]); // 3
在这个例子中,Math.max.apply(null, [1, 2, 3])
将数组[1, 2, 3]
作为参数传递给 Math.max 函数,从而实现了求最大值的功能。
模拟其他函数的行为
作用
通过 apply,你可以将一个对象的函数赋值给另一个对象,从而模拟其他函数的行为。
示例
var person = { fullName: function(city, country) { return this.firstName + " " + this.lastName + ", " + city + ", " + country; } }; var person1 = { firstName: "John", lastName: "Doe" }; person.fullName.apply(person1, ["Oslo", "Norway"]); // 将返回 "John Doe, Oslo, Norway"
在这个例子中,person.fullName
方法被应用到person1
对象上,并且传递了额外的参数["Oslo", "Norway"]
。
4. 把arguments
改为真正的数组
作用
arguments
是函数自带的某个属性,可以用来访问传入函数的参数,但它没有数组的方法,通过 apply,可以将arguments
转换为真正的数组。
示例
function fun() { console.log(arguments.concat([3])); // 报错 const arr = Array.prototype.slice.apply(arguments); console.log(arr.concat([3])); // 输出 [1, 2, 3] } fun (1, 2);
在这个例子中,Array.prototype.slice.apply(arguments)
将arguments
转换为真正的数组,从而可以使用数组的方法如concat
。
数组拼接
作用
利用 apply 可以将两个数组合并为一个数组。
示例
var arr1 = [1, 3, 4]; var arr2 = [6, 7, 8]; Array.prototype.push.apply(arr1, arr2); console.log(arr1); // 输出 [1, 3, 4, 6, 7, 8]
在这个例子中,Array.prototype.push.apply(arr1, arr2)
将arr2
的元素逐个推入arr1
,从而实现了数组的拼接。
apply 是一个非常强大的工具,可以灵活地改变函数内部的this
指向,以及将数组作为普通参数传递给函数,在编写复杂的 JavaScript 代码时,合理使用 apply 可以提高代码的灵活性和可读性。
以上就是关于“applyjs使用方法”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/713519.html