写自己的代码之关于call与apply的使用

call与apply经常要使用,该如何去使用它呢?我觉得这两个函数用来和回调函数搭配挺好。

有这么一段代码

for(var item in obj){
     this[item] = obj[item]
}

call与apply如果不是数组或者对象该怎么办,测试了一下,还是会执行,但是却无法将obj对象中的属性附加到this中了,因为只有数组和对象这么使用的,所以alert(item) //undefined

这里记录这些是为了说明call与apply的第一个参数可以是任何内置对象或者其他,而不用再call、apply内部实现需要判别类型。

做下总结顺便做下应用,不管是对是错,至少对于先阶段的我来说还是有用的

这两个方法共同点:ftn.call(obj,arg1,arg2), apply.call(obj,ary) 都会调用ftn(),并且改变调用ftn的对象变成:obj.ftn(),所以ftn中的this指的是obj, call会将arg1,arg2作为参数传入ftn 当然call会将ary这个数据根据ftn参数个数,依次传入参数。
call作用,想通过obj之手调用ftn,并传入指定参数 -可以使用,当然还有什么继承之类的。

将一个函数当做另外一个函数的参数,这种写法在java中,我没有多少应用,但是在js中却经常见到,看到其中的好处、一段固定功能的代码,需要包含

一个可变的功能,这个功能不确定、或者在维护的时候可能经常要修改,那么使用一下回调函数吧

var iterate = function(target,method){
		//判断target是否是对象
		var temp = Object.prototype.toString.call(target);
		if(temp === "[object Object]"){
			for(var item in target){
				method.call(item,target[item]);
			}
		}
	}
	var _method = function(arg){
		alert("key: "+this+" 输出:"+arg);
	}
	var obj = {name : '咕咕鸡',age : '1'};
	iterate(obj,_method);





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值