重温JS基础-1-动态this三兄弟

本文详细介绍了JavaScript中用于动态改变函数内部this指向的三个方法:call、apply和bind。通过实例展示了它们的用法和区别,帮助开发者更好地理解和运用这三种方法来控制函数执行时的上下文。
摘要由CSDN通过智能技术生成

相信对很多兄弟对js的this弄不清楚,但是咱们今天先不说this(什么默认全局,显示设定,隐设定,动态忽略等等),咱们单说那能改变当前this的三剑客。 call  apply  bind

先看默认情况下,this默认指向全局,


var name = '动物'
function animal(){
	console.log(this.name+'-在跑')
}
animal(); //输出 动物-在跑

上面代码,this.name默认取了全局的name,动物,animal内部

下面先介绍一下分别用三剑客,动态一下this,来实现一下

var name = '动物'
function animal(){
	console.log(this.name+'-在跑')
}
animal.call({name:'猫咪'});

animal.apply({name:'狗狗'});

animal.bind({name:'老虎'})();

 结果如下

 

可能你不知道你函数里面用的this是什么已经经过千回百转,找不到上下文了,但是通过动态指定你永远能够知道自己要的是什么。

带参数的时候写法有些不同

var name = '动物'
function animal(age,lan){
	console.log(this.name,'年龄已经',age,'仍然在学',lan)
}
animal.call({name:'猫咪'},20,'js');

animal.apply({name:'狗狗'},[20,'java']);

animal.bind({name:'老虎'},20,'c#')();

结果如下:

 简单总结为:

三者都可以动态改变this,

call参数(新this,参数1,参数2,参数N..),参数在新的this后依次展开。

apply参数(新this,【参数1,参数2,参数N..】),apply两个参数,第一个和call一样,但是apply把剩余的实际函数参数全都封装在一个数组后面给了apply第二个参数上。

bind的参数和call相同 新this,参数1,参数2,参数N..),不同的是call和apply都是直接执行了函数,bind是返回一个函数句柄,需要再次调用,

故实际使用用bind是xxx.bind(新this,【参数1,参数2,参数N..】(),多了一个执行()。说明bind只是返回了函数没有执行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值