js中改变this指向的三种方法(bind、call、apply)
2020-04-22 04:21
851 查看
var obj1 = { name: 'obj1', getName () { console.log(this.name) } } var obj2 = { name: 'obj2', getName () { console.log(this.name) } } obj1.getName() // obj1
1.bind:不会执行原函数
(1)bind方法直接使用没反应,只是改变this指向obj2,不会立即执行; (2)需要()手动执行方法 ,生成一个全新的函数; (3)可以传多个参数;
obj1.getName.bind(obj2) // 没反应,只是改变this指向obj2,不会立即执行,需要手动执行方法 obj1.getName.bind(obj2)() // ()手动执行生成一个全新的函数 obj1.getName.bind(obj2, 'aaa', 'bbb', 'ccc')() // 可以传无限多个参数
2.call:会执行原函数
(1)改变this指向obj2,会立即执行; (2)可以传多个参数
obj1.getName.call(obj2) // obj2,改变this指向obj2,会立即执行 obj1.getName.call(obj2, 'aaa', 'bbb', 'ccc') // 可以传无限多个参数
3.apply:会执行原函数
(1)改变this指向obj2,会立即执行 (2)两个参数(一个对象+一个数组)
obj1.getName.apply(obj2) // obj2,改变this指向obj2,会立即执行 obj1.getName.apply(obj2, ['aaa', 'bbb', 'ccc']) // 只有两个参数,一个对象+一个数组
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- js中this的改变指向的方法:call和apply、bind
- JS中改变this指向的方法(call和apply、bind)
- 详解改变this指向的三种方法call apply bind及重写(模拟)
- JS中改变this指向的方法(call和apply、bind)
- js中改变this指向的三个常用方法bind,call和apply
- call,apply,bind方法改变this指向的原理
- js的this指针指向谁,以及相关的call、apply、bind方法
- 改变【this】指向的三种方式(call、apply、bind)对比
- js改变this指向方法call,apply;jq改变this指向方法$.proxy()
- js call() apply() bind() -改变this指向
- JavaScript改变this指向apply、call和bind方法
- JavaScript中call,apply,bind方法的总结(改变this指向)
- 浅谈js中的call,apply,bind方法中的this指针
- JS中的this指向问题以及apply、call、bind的使用
- js面向对象||this指向||call和apply方法的使用和区别
- JavaScript---浅谈函数this指向之 call()、apply()、bind()方法
- 改变this指向:call,apply,bind
- JS中this到底指向谁(call、apply、bind)
- 改变this的三种方式:call,apply,bind简述
- 函数中的this指向,以及 修改this指向的 call/apply/bind方法