call,apply和bind的区别

call

call是一个方法,是函数的方法
call可以调用函数,call可以改变函数中this的指向

call和apply

相同点:都会调用函数
不同点:传参的方式不同,call传参时一直往后加参数,apply传参数是以数组的形式传参

call和bind

相同点:传参的方式一样
不同点:call会调用函数,bind不会调用函数,它会作为一个返回值返回一个函数,然后才可以调用

例子一:
function fun(){
	console.log('调用')
}
fun.call()//打印了  调用
例子二
function fun(){
	console.log(this)
}
fun.call()//this指向了window
例子三
function fun(){
	console.log(this.name)
}
fun.call(cat)//打印了  喵喵

let cat = {
	name:'喵喵'
}
例子四:
let dog = {
	name:'旺财',
	sayname(){
		console.log("我是"+this.name)
	},
	eat(food){
		console.log("我喜欢吃"+food)
	},
	eat1(food,food1,food2){
		console.log("我喜欢吃"+food+food1+food2)
	}
}
dog.sayname()//打印出   我是旺财

dog.sayname.call(cat)//打印出  我是喵喵

dog.eat("骨头")//打印出  我喜欢吃骨头

dog.cat.call(cat)//打印出  我喜欢吃undefined

dog.eat.call(cat,'鱼')//我喜欢吃鱼

dog.eat.call(cat,'鱼','肉','水果')//我喜欢吃鱼肉水果

dog.eat.appiy(cat,['鱼','肉','水果'])

dog.eat.bind(cat,'鱼','肉','水果')//什么也不会打印出来    bind的传参方式和call一样,但是唯一不一样的是bind他不会调用函数,他会作为一个返回值,返回一个函数,然后再将这个函数调用(他会把一个函数已返回值的方式返)回出来

let fun = dog.eat.bind(cat,'鱼','肉','水果')
fun()//打印出  我喜欢吃鱼肉水果
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值