Es5----替换this

替换this:
有时函数中的this不是我们想要的
1.临时调用一次函数,并临时替换一次this为指定的该对象
要调用的函数.call,替换this的对象其余实参值列表
原理:
call调用的意思,意为立刻调用函数执行一次
调用时,call()的第一个实参值对象进入要调用的函数内替换this
除第一个实参值对象以外,其他剩余实参值会依次传给要调用的函数的形参变量

	function jisuan(base,a1,a1){
		console.log(`${this.ename}的总工资是${a1+a2}`);
	}
	var lilei={ename:'lilei'};
	var hmm={ename:'hmm'};
	jisuan.call(lilei,100,200,300);
2.原函数有多个形参变量,要求分别传入多个实参值,但是多个实参值却是放在数组中给的,用apply代替call
要调用的函数.apply(替换this的对象,保存多个实参值的数组)
原理:
	1.apply:使用.应用的意思,意为立刻调用函数执行一次
	2.调用时:3件事
		a.apply()的第一个实参值对象进入要调用的函数内替换this
		b.先把第二个实参值数组扩散为多个实参值
		c.再将从数组中打散出来的多个实参值,依次传给要调用的函数的形参变量
	3.每次调用函数都要替换this,且每次调用时有部分实参值还是相同的
	解决:为对象买一个专属的函数副本,并永久绑定this和部分实参值
	 	var 函数副本=原函数.bind(替换this对象,部分固定的实参值)
	原理:
		a.不是调用函数,而是创建一个和原函数一模一样的函数副本
		b.新的函数副本中的this被永久的替换为bind()第一个实参值对象
		c.永久替换函数副本中第一个形参变量的值为bind()中第二个实参值
		
总结:
	 替换this共有3种选择:
	 	1.在一次调用函数时,临时替换一次this:首选call
	 	2.在一次调用函数时,需要多个实参值,但是多个实参值却是放在一个数组中保存的,需要打散数组并替换this,apply
	 	3.反复使用一个函数,并永久替换this时,用bind()创建函数副本
		function jisuan(base,a1,a2,a3){
			console.log(`${this.ename}的总工资是${a1+a2+a3}`);
		}
		var lilei={ename:'lilei'};
		var jisuan2=jisuan.bind(lilei,1000);
		jisuan2(2000,3000,4000);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值