1、call、apply、bind函数
改变当前函数对象this的指向。
注意:三个函数为函数对象所有。
(1)call用法:fn.call(obj,1,2),将fn()函数里面的this改为指向obj,这样当全局变量与obj里的变量同名时,用的是obj里面的。参数是一个个的单独的参数。
(2)apply用法:传的参数是数组。fn.apply(obj,[1,2])
(3)bind用法:返回一个函数,不是立即调用的。var newFn = fn.bind(obj,1,2) newFn()
应用场景:回调函数里面去使用。
例外:es6箭头函数的this:根据代码上下文的function来绑定,不能使用上面三个函数来改变this的指向。箭头函数没有this。
// 函数fn里面绑定点击事件,点击事件里需要使用this指向函数里的变量,则需要改变this的指向。4种方法:
function fn() {
// fn的this
// 1、btn.onclick = function(){ // this指向btn }
// 2、btn.onclick = ()=>{ // this指向fn }
// 3、最原始的方法
// var self = this;
// btn.onclick = function(){ // this指向btn,self指向fn的this }
// 4、bind
// let callback = function(){ // this指向fn }
// btn.onclick = callback.bind(this)
}
本文详细解析了JavaScript中call、apply与bind三个函数的作用及用法,它们用于改变函数内部this的指向,并通过实例说明了如何在回调函数中正确应用这些方法。
1764

被折叠的 条评论
为什么被折叠?



