js【详解】call()、apply()、bind()方法

简介: js【详解】call()、apply()、bind()方法

call()、apply()、bind()都是Function原型上的方法(所有的函数都是Function的实例,所以所有函数都支持这三种方法

用途都是改变this的指向

var name="张三",age=18;
 
var obj = {
  name:"李四",
  oldAge:this.age,
  myFn:function(a, b){
    console.log( this.name+"年龄"+this.age,"来自"+a+"去往"+b )
  }
}
 
var newObj = {
    name:"王五",
    age:22
}
 
obj.myFn.call(newObj,'北京','上海'); // 王五年龄22 来自北京去往上海
obj.myFn.apply(newObj,['北京','上海']);  // 王五年龄22 来自北京去往上海 
obj.myFn.bind(newObj,['北京','上海'])(); //王五年龄22 来自北京,上海去往undefined
obj.myFn.bind(newObj,'北京','上海')(); // 王五年龄22 来自北京去往上海

call()、apply()、bind()的相同点:

第一个参数相同,都是this要绑定的对象

call()、apply()、bind()的不同点:

  • call 的第二、第三……第 N 个参数,全都用逗号分隔  obj.myFn.call(newObj,'北京','上海')
  • apply 的第二、第三……第 N 个参数,全都放在一个数组 obj.myFn.apply(newObj,['北京','上海'])
  • bind 的传参方法与call相同,但因bind会返回一个新的函数,所以必须再次调用才会执行,即还需加上(),如obj.myFn.bind(newObj,'北京','上海')();
目录
相关文章
|
5天前
|
自然语言处理 JavaScript 前端开发
JS中this的应用场景,再了解下apply、call和bind!
该文章深入探讨了JavaScript中`this`关键字的多种应用场景,并详细解释了`apply`、`call`和`bind`这三个函数方法的使用技巧和差异。
|
7天前
|
JavaScript 前端开发 API
javaScript中常用的String方法以及注意点总结
本文总结了JavaScript中常用的String对象的方法及其注意事项,包括大小写转换、字符获取、子字符串截取、字符串拼接、去除空格、替换、分割以及查找字符串中字符的索引等操作。提供了每种方法的使用示例代码,帮助理解它们的具体用法和差异。
20 2
|
8天前
|
JavaScript 前端开发
JS之concat方法
本文介绍了JavaScript中`concat`方法的使用,展示了如何利用该方法来合并数组,包括与字符串、数字、对象等类型的拼接,以及使用扩展运算符进行合并的示例。
9 0
JS之concat方法
|
3天前
|
JavaScript 前端开发
JavaScript遍历数组用splice方法删除元素,这样写可能有遗漏,你遇到过吗?
JavaScript遍历数组用splice方法删除元素,这样写可能有遗漏,你遇到过吗?
|
3天前
|
JavaScript 前端开发
JavaScript从二维数组抽取元素组成新数组的三种方法
JavaScript从二维数组抽取元素组成新数组的三种方法
|
3天前
|
JavaScript 前端开发
用Javascript对二维数组DIY按汉语拼音的排序方法
用Javascript对二维数组DIY按汉语拼音的排序方法
|
5天前
|
JSON JavaScript 前端开发
6-19|Python数据传到JS的方法
6-19|Python数据传到JS的方法
|
5天前
|
JavaScript 前端开发
JavaScript 中 五种迭代数组的方法 every some map filter forEach
本文介绍了JavaScript中五种常用数组迭代方法:every、some、filter、map和forEach,并通过示例代码展示了它们的基本用法和区别。
|
2月前
|
前端开发 JavaScript 开发者
揭秘JavaScript魔法三剑客:call、apply、bind,解锁函数新世界,你的前端之路因它们而精彩!
【8月更文挑战第23天】在 JavaScript 的世界里,`call`、`apply` 和 `bind` 这三个方法常常让新手感到困惑。它们都能改变函数执行时的上下文(即 `this` 的指向),但各有特点:`call` 接受一系列参数并直接调用函数;`apply` 则接收一个参数数组,在处理不确定数量的参数时特别有用;而 `bind` 不会立即执行函数,而是创建一个新版本的函数,其 `this` 上下文已被永久绑定。理解这三个方法能帮助开发者更好地运用函数式编程技巧,提升代码灵活性和可维护性。
29 0
|
8天前
|
JavaScript 前端开发
this指向的几种情况以及js简单实现call、apply、bind___六卿
本文讨论了JavaScript中`this`的指向规则,并提供了`call`、`apply`和`bind`方法的简单实现,用于改变函数的`this`指向。
10 0
this指向的几种情况以及js简单实现call、apply、bind___六卿