this指向

本文详细解析了JavaScript中call、apply与bind三个函数的作用及用法,它们用于改变函数内部this的指向,并通过实例说明了如何在回调函数中正确应用这些方法。

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)

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值