关于js中apply和call的使用

apply方法的使用

我们先来看一段代码:

function f1(){
			console.log(this)
		}

通过控制台我们知道,f1函数中输出的是window这个对象。但是我们在做项目的时候往往会有需要调用其它对象中的方法,那么这个时候我们怎么办呢,别慌! 重点来了,我们可以使用call和apply来改变this的指向。

咋们再来看一段代码:

var obj={
			 name:"爱新觉罗.豪",
			 age:"18",
			 eat:function(name){
				 console.log(this.name+"正在吃饭")
			 }
		 }
		 function f1(){	
		 		console.log(this.name)
				console.log(this.age)
				this.eat()
		 }
		f1.apply(obj)

效果图:
在这里插入图片描述
通过控制台可以看出,f1函数中的this指向已经指向了obj,能够访问obj中的属性和方法。在这里可能会有人疑问f1函数没有调用怎么控制台会输出结果呢。其实f1.apply(obj)就相当于调用f1函数,并且改变f1函数的指向。

call方法的使用

其实call和apply的用法是一样的,只要你看懂了上面的代码相信你使用call也是小菜一碟。虽然说call方法和apply方法用法是一样的,但是两者还是有区别的。接下来我们看一下两者之间的区别:

var obj={
			 name:"爱新觉罗.豪",
			 age:"18",
			 eat:function(name){
				 console.log(this.name+"正在吃饭")
			 }
		 }
		 function food(x,y){	
		 		console.log("apply方法: "+(x+y))
		 }
		food.apply(obj,[100,150])
		
		function food2(x,y){
		 		console.log("call方法: "+(x+y))
		 }
		food2.call(obj,100,822)

效果图:
在这里插入图片描述
通过结果图我们会发现call和apply输出的结果是一样的,但是两者传入的参数不一样,apply方法传入两个参数,第一个参数传入一个对象,并且表示指向指向该对象,第二个参数为一个数组。call方法第一个参数传入的也是一个对象,第二个参数不是数组,而是依次传入。

call和apply方法总结:

                               相同点:都能够改变this的指向。  
                              不同点:两者传入的参数不一致。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值