js-函数对象的方法 call apply

函数也是一个对象:fun才是对象

1、在函数对象中有一个call()和apply()方法---需要通过函数对象调用

			function fun() {
				console.log('我是fun函数');
			}
			fun();
			fun.apply();
			fun.call();

2、 当调用call()和apply()方法,都会调用函数执行。

3、在调用call()和apply()方法时候可以将一个对象指定为第一个参数:

//以函数调用this指向window

		function fun() {
				console.log(this);//以函数调用this指向window
			}
			fun();

4、在调用call()和apply()方法时候可以将一个对象指定为第一个参数 :此时这个对象将会成为函数执行时候的参数

			function fun() {
				console.log(this);//以函数调用this指向window
			}
			//fun();
			obj={};//对象
			fun.apply(obj);
			fun.call(obj);

5、 this由call(对象)和apply(对象)---指定

			function fun() {
				console.log(this);//以函数调用this指向window
			}
			//fun();
			obj={name:'李四'};//对象
			fun.apply(obj);
			fun.call(obj);

6、对象里面的函数this 指定

             obj = {
                name: '李四',
                sayName: function(){
                    console.log(this.name);
                } //对象里面的方法指向obj
            }; //对象
            obj.sayName();//李四
        

 此时使用apply()方法 更改this内容——参数是谁this是谁

	obj = {
				name: '李四',
				sayName: function(){
					console.log(this.name);
				} //对象里面的方法指向obj
			}; //对象
			obj1={name:'张三'};
			
			obj.sayName.call(obj1);//张三
			obj.sayName.apply(obj1);
		

7、call()方法可以将实参在对象之后依次传递:
 

		obj1={name:'张三'};
			
			function fun(a,b){
				console.log('a='+a);
				console.log('b='+b);
				console.log(this);
			} //函数里面的this指向window
			fun();
			fun.call(obj1,2,3);

 8、apply方法需要将实参封装到一个数组中传递

			obj1={name:'张三'};
			
			function fun(a,b){
				console.log('a='+a);
				console.log('b='+b);
				console.log(this);
			} //函数里面的this指向window
			fun();
			fun.apply(obj1,[2,3]);

 注意:this

1、以函数形式调用,this是window

2、以方法调用,this是调用方法的对象

3、以构造函数调用,this是新创建的那个对象

4、使用call和apply调用,this是指定的那个对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值