javascript中callapply与bind方法详解_基础知识

javascript中callapply与bind方法详解_基础知识

ID:30776014

大小:95.00 KB

页数:8页

时间:2019-01-03

javascript中callapply与bind方法详解_基础知识_第1页
javascript中callapply与bind方法详解_基础知识_第2页
javascript中callapply与bind方法详解_基础知识_第3页
javascript中callapply与bind方法详解_基础知识_第4页
javascript中callapply与bind方法详解_基础知识_第5页
资源描述:

《javascript中callapply与bind方法详解_基础知识》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、javascript中callapply与bind方法详解在JavaScript中,call>apply和bind是Function对象自带的三个方法,本文将通过几个场景的应用,来详细理解三个方法。call()call()方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法。当调用一个函数时,可以赋值一个不同的this对象。this引用当前对象,即call方法的第一个参数。通过call方法,你可以在一个对彖上借用另一个对彖上的方法,比如Object,prototype.toString.call([]),就是一个Array对象借用了Objec

2、t对象上的方法。语法fun.cal1(thisArg[,argl[,arg2[,...]]])thisArg在fun函数运行时指定的this值。需要注意的是下而几种情况(1)不传,或者传null,undefined,函数中的this指向window对象(2)传递另一个函数的函数名,函数中的this指向这个函数的引用,并不一定是该函数执行时真正的this值(3)值为原始值(数字,字符串,布尔值)的this会指向该原始值的自动包装对象,女IIStringxNumberxBoolean(4)传递一个对象,函数中的this指向这个对象argl,arg2,...指定的参数列表

3、。例了初级应用例子functiona(){//输出函数a中的this对象consolc.log(this);}//定义函数bfunctionb(){}varobj={name/这是一个屈丝'};//定义对象obja.call();//windowa.call(null);//windowa.cal1(undefined);//windowa.call(1);//Number3.call;//Stringa.call(true);//Booleana.call(b);//functionb(){}a.call(obj);//Object使用call方法调用匿名函数并且

4、指定上下文的this在下而的例子屮,当调用greet方法的时候,该方法的this值会绑定到i对彖。functiongreet(){varreply二[this.person,,是一个轻量的,,this.role],join(,,);console,log(reply);}vari二{functiongreet(){varreply二[this.person,,是一个轻量的,,this.role],join(,,);console,log(reply);}vari二{person:,JSLitc・io,,role:'Javascript库。,};greet,call(

5、i);//JSLite.io是一个轻量的Javascript库。person:'JSLite.io',role:5Javascript库。'greet,call(i);//JSLite.io是一个轻量的Javascript库。使用call方法调用匿名函数在下例屮的for循环体内,我们创建了一个匿名函数,然后通过调用该函数的call方法,将每个数组元素作为指定的this值执行了那个匿名函数。这个匿名函数的主要口的是给每个数组元素对象添加一个print方法,这个print方法可以打印出各元索在数组中的正确索引号。当然,这里不是必须得让数组元索作为this值传入那个匿名函

6、数(普通参数就可以),目的是为了演示call的用法。varanimals=[{species:'Lion',name:'King'},{species:'Whale',name:'Fail,}];for(vari=0;i

7、法调用函数传参数vara二{name:'JSLite.io',//定义a的属性say:function(){//定义a的方法console.log(z/Hi,Tmfunctiona!/z);}};functionb(namc){console.log(z,Postparams:〃+name);console,logCTm〃+this,name);this,say();}b.call(a,'test");//Postparams:test//rmonepixel//T,mfunctiona!apply0语法与callO方法的语法儿乎完全相同,唯一的区别在于,app

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。