apply、bind和call

简介: apply、bind和call

apply、bind和call
apply、bind和call都可以改变this的指向
apply(thisArg[, argsArray])
apply() 方法调用一个具有给定 this 值的函数,以及以一个数组(或一个类数组对象)的形式提供的参数
thisArg: 在函数运行时使用的 this 值。请注意,this 可能不是该方法看到的实际值:如果这个函数处于非严格模式下,则指定为 null 或 undefined 时会自动替换为指向全局对象,原始值会被包装

argsArray: 可选。一个数组或者类数组对象,其中的数组元素将作为单独的参数传给 函数。如果该参数的值为 null 或 undefined,则表示不需要传入任何参数

返回值:调用有指定 this 值和参数的函数的结果

const numbers = [1, 3, 2, 5, 7, 4]
const max = Math.max.apply(null, numbers) // 7
const min = Math.max.apply(null, numbers) // 1
call(thisArg[, arg1[, arg2[, ...]]])
call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数
该方法的语法和作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组
thisArg: 在函数运行时使用的 this 值。请注意,this 可能不是该方法看到的实际值:如果这个函数处于非严格模式下,则指定为 null 或 undefined 时会自动替换为指向全局对象,原始值会被包装

arg1, arg2, ...: 指定的参数列表

返回值:调用有指定 this 值和参数的函数的结果

bind(thisArg[, arg1[, arg2[, ...]]])
bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用(bind 是创建一个新的函数,我们必须要手动去调用)
thisArg: 调用绑定函数时作为 this 参数传递给目标函数的值。如果使用new运算符构造绑定函数,则忽略该值。当使用 bind 在 setTimeout 中创建一个函数(作为回调提供)时,作为 thisArg 传递的任何原始值都将转换为 object。如果 bind 函数的参数列表为空,或者thisArg是null或undefined,执行作用域的 this 将被视为新函数的 thisArg

arg1, arg2, ...: 指定的参数列表

返回值:返回一个原函数的拷贝,并拥有指定的 this 值和初始参数

目录
相关文章
new bind apply call instanceof 等笔记
new bind apply call instanceof 等笔记
36 0
|
12天前
|
JavaScript 前端开发 开发者
call、bind、apply区别
【10月更文挑战第26天】`call`、`bind` 和 `apply` 方法在改变函数 `this` 指向和参数传递方面各有特点,开发者可以根据具体的需求和使用场景选择合适的方法来实现更灵活和高效的JavaScript编程。
19 1
|
1月前
|
前端开发 JavaScript
比较一下apply/call/bind ?
本文首发于微信公众号“前端徐徐”,详细介绍了 JavaScript 中 `apply`、`call` 和 `bind` 方法的概念、使用场景及手动实现。主要内容包括: - **apply**:使用数组作为参数调用函数,并指定 `this`。 - **call**:直接传递参数调用函数,并指定 `this`。 - **bind**:返回一个绑定了 `this` 和部分参数的新函数。 文章还对比了这三个方法的区别,并提供了手动实现的代码示例。
16 2
|
6月前
call\apply\bind详解
call\apply\bind详解
32 0
bind、call、apply 区别
bind、call、apply 区别
78 0
call、apply、bind笔记
call、apply、bind笔记
62 0
|
JavaScript 前端开发
一文搞定this、apply、call、bind
一文搞定this、apply、call、bind