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,'北京','上海')();
目录
相关文章
|
29天前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
27天前
|
监控 JavaScript Java
Node.js中内存泄漏的检测方法
检测内存泄漏需要综合运用多种方法,并结合实际的应用场景和代码特点进行分析。及时发现和解决内存泄漏问题,可以提高应用的稳定性和性能,避免潜在的风险和故障。同时,不断学习和掌握内存管理的知识,也是有效预防内存泄漏的重要途径。
122 52
|
29天前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
41 5
|
1月前
|
JavaScript 前端开发
js中的bind,call,apply方法的区别以及用法
JavaScript中,`bind`、`call`和`apply`均可改变函数的`this`指向并传递参数。其中,`bind`返回一个新函数,不立即执行;`call`和`apply`则立即执行,且`apply`的参数以数组形式传递。三者在改变`this`指向及传参上功能相似,但在执行时机和参数传递方式上有所区别。
26 1
|
1月前
|
JavaScript 前端开发
.js方法参数argument
【10月更文挑战第26天】`arguments` 对象为JavaScript函数提供了一种灵活处理参数的方式,能够满足各种不同的参数传递和处理需求,在实际开发中具有广泛的应用价值。
41 7
|
7月前
|
JavaScript 前端开发
JavaScript中call()与apply()的作用与区别?
JavaScript中call()与apply()的作用与区别?
|
6月前
|
JavaScript 前端开发 开发者
【JavaScript】JavaScript中call、apply与bind的区别:进阶特性与应用场景
【JavaScript】JavaScript中call、apply与bind的区别:进阶特性与应用场景
68 0
|
7月前
|
前端开发 JavaScript
【Web 前端】 js中call、apply、bind有什么区别?
【4月更文挑战第22天】【Web 前端】 js中call、apply、bind有什么区别?
【Web 前端】 js中call、apply、bind有什么区别?
|
7月前
|
JavaScript 前端开发
JavaScript中call()与apply()的作用与区别?
JavaScript中call()与apply()的作用与区别?
102 3
|
JavaScript 前端开发
JavaScript call、apply 和 bind 的区别
JavaScript call、apply 和 bind 的区别