JavaScript知识梳理 - 函数的this指向及改变 - call、apply、bind(六)
2020-07-08 10:39
337 查看
函数的this指向
1.this的指向
-
this指向函数的调用对象
-
this指事件的调用对象
-
在构造函数中this指向示例对象
-
再prototype原型的方法中,this指向示例对象、
-
找不到函数的调用的this指向window
-
箭头函数没有自己的this,它的this指向上下文中的this(即所处环境的this)
function fn(x, y) { console.log('coming',this); console.log(x + y); } let obj={ name:'nick', hobby:'basketball' } // 调用函数,改变函数中的this fn.call(obj,5,7) //第一个参数改变了this的指向,其他参数对应函数里的参数,立即执行=>call fn.apply(obj,[5,7]) //第一个参数改变了this的指向,第二个参数是个数组,立即执行=>apply let emit = fn.bind(obj,5,7) //第一个参数改变了this的指向,其他参数对应函数里的参数, //但需调用再执行=>bind emit()
call、apply、bind
- call、apply、bind都是Function.prototype的方法,所以每个函数都有call、apply、bind属性。
- call、apply、bind的作用都可改变函数内部的this指向
1.call
- call()的作用 改变了原来函数的this指向
- 绑定函数内部的this指向,this指向obj
- 没有返回值,会执行当前函数。
- 传参方式:call()里的第一个参数一个对象,后边参数是用逗号隔开的列表。
fn.call(obj,2,3,4,5)
2.apply
- apply()的作用 改变了原来函数的this指向
- 绑定函数内部的this指向,this指向obj
- 没有返回值,会执行当前函数。
- 传参方式:apply()里只有两个参数,第一个参数是一个对象,第二个参数是一个数组
fn.apply(obj,[2,3,4,5])
3.bind
-
bind(obj)的作用
改变了原来函数的this指向
-
绑定函数内部的this指向,this指向obj
-
返回值是调用bind方法的函数体本身,不会执行当前函数,要调用一下f()。
var obj={ a:1, b:2 } function fn(){ console.log(this) } var f = fn.bind(obj) f()//{a:1,b:2}
总结
- call、apply和bind都可以改变函数的this指向
- call、apply和bind第一个参数的是this要指向的对象
- call、apply和bind都可以后续为函数传参,apply是将参数并成一个数组,call和bind是将参数依次列出。
- call、apply都是直接调用,bind生成的this指向改变函数需要手动调用。
!!! 以上是DaXiong本人对前端知识的理解总结,如内容知识有错误可以留言修改。
!!!如果以上内容帮助到了你,点击一下赞或者收藏吧!
相关文章推荐
- JavaScript改变this指向apply、call和bind方法
- JavaScript---浅谈函数this指向之 call()、apply()、bind()方法
- JavaScript中call,apply,bind方法的总结(改变this指向)
- 函数内this指向的不同场景,以及如何改变this的指向(bind,call,apply)
- javascript改变this指向之call、apply、bind
- 改变【this】指向的三种方式(call、apply、bind)对比
- js中this的改变指向的方法:call和apply、bind
- call,apply,bind改变this指向
- 函数中的this指向,以及 修改this指向的 call/apply/bind方法
- js中改变this指向的三个常用方法bind,call和apply
- 详解改变this指向的三种方法call apply bind及重写(模拟)
- js中改变this指向的三种方法(bind、call、apply)
- JS中改变this指向的方法(call和apply、bind)
- javascript this 和 es6 箭头函数this 的理解以及call()、apply()、bind()的用法
- js call() apply() bind() -改变this指向
- call,apply,bind方法改变this指向的原理
- 改变this指向(call、apply、bind)
- ES6--改变this指向 call、apply、bind
- 改变this指向:call,apply,bind
- JavaScript中的call(),apply(),bind()方法 关于this指向