JS中的call,aply,bind

call :调用函数,改变函数的this指向
第一个参数设置函数内部this的指向
其他参数对应函数的参数
call的返回值就是函数的返回值
如下:
将一个对象的方法应用到另一个对象

var obj = {
	sum:function(a,b){
		return a+b;
	}
}	
var jbj = {
	a:12,
	b:14
}

此时如果我想计算jbj对象的两个属性之和,但又不想在写代码这时候就可以直接应用obj的方法

var res = obj.sum.call(jbj,jbj.a,jbj.b);
console.log(res);

结果输出26

2.apply 调用函数,改变this
第一个参数设置函数内部this的指向
第二个参数传递数组的话会将数组中的每一项返回给apply前面的方法
如求数组的最大值我们可以借助Math.max

var arr = [1,2,3];
var res = Math.max.apply(arr,arr);
console.log(res);//返回3

3.bind 改变this的指向
bind也可以改变this的指向,不同的是bind不会调用方法,而是复制对象方法

var obj {
	name:'zs',
	fun:function(){
	   setInterval(function(){
	   console.log(this.name)//此时不会打印name值
	  // 因为此时this指向的是定时器的函数,定时器里面的函数没有name
	   //我们需使其指向obj即可
	   }.bind(this),2000)
	}
}

发布了88 篇原创文章 · 获赞 2 · 访问量 2995

猜你喜欢

转载自blog.csdn.net/weixin_45143481/article/details/104539795