call()、apply()、bind()方法的使用

本文详细解析了JavaScript中的call(), apply(), bind()方法,重点在于它们如何改变函数执行时的this指向。call和apply的主要区别在于传递参数的方式,call接收参数列表,apply以数组形式传递。bind则返回一个新函数,保持原函数的this绑定,不会立即执行。对于ES6中的箭头函数,call和apply不再起作用,因为箭头函数不绑定this。" 132951387,19694720,坦克大战项目实战:设计模式与编程的完美结合,"['设计模式', 'java', '编程实践', '游戏开发']
摘要由CSDN通过智能技术生成

call()、apply()、bind()方法的使用

这三个方法尤其不好区分、也容易混淆,网上有很多文章试图解释这三个的区别及用法。有的还举例,用故事说,反而增加了理解的难度,只是想简单、快速、直接在理解这几个方法,但是却得先理解那个故事的含义。 很无语。。。

call、apply、bind的作用是改变函数运行时this的指向

我去,啥意思?我们看一下面两个对象

var name = 'WW'
function objA() {
   
	name: 'AA',
	show: function(){
   
		console.log(this.name)
	}
}

function objB() {
   
	name: 'BB'
}
var a = new objA()
var b = new objB()

// 注意,这里是精华
a.show()            // output>> AA
a.show.call(null)   // output>> WW
a.show.call(b)      // output>> BB

a.show.apply
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值