call()与apply()函数

109 阅读1分钟

1、call()和 apply()是JavaScript预定义的一个方法,可以用来调用对象所以者的参数,属性及方法,这些方法都是Function这个对象所提供的方法,而这些方法的作用就是为了改变函数中this指向的。

var obj = {
		name: '小明',
		fun: function (){
		return this.name + ":" + obj.name;
		 }
	}
	console.log(obj.fun());//this指向obj,输出:小明
var porse = {//需要执行的对象:porse.fun();
		fun: function (){
		return this.name + "今年" + this.age + "岁";
				}
			}
			
			//小明
			var xm = {
				name: '小明',
				age: 18
			}
            
			//小红
			var xh = {
				name: '小红',
				age: 20
			} 
			
			//让小明去执行要做的事情
	console.log(porse.fun.call(xm));//小明今年18
	console.log(porse.fun.call(xh));//小红今年20

上面代码使用call()可以调用其他对象的属性、参数及方法 通用对象(父对象): 要做的事情,改变了this的指向。

2、apply()与call()方法相同,可以改变this指向,apply()接收数组形式的参数

(1)写法:

call()方法内接受参数若干,第一个参数为改变后的this指向,后面可以跟若干参数,用逗号隔;该方法调用后立即执行;

apply()方法接受两个参数,第一个参数为改变后的this指向,第二个参数为数组,将要传递的所有参 数必须放在数组内;该方法调用后立即执行;

        console.log(porse.fun.apply(xm));
	console.log(porse1.fun.apply(xh, ['aa', 'bb']));
	var arr = [12];
	console.log(porse1.fun.apply(xh, arr));

3、call()与apply()的区别

1、call()分别接收参数

2、apply()接受数组形式的参数