关于JS中的apply,call,bind的深化解析_
2021-08-27 13:15:04
浏览次数:
关于JS中的apply,call,bind的深化解析_ 在Javascript中,Function是一种对象。Function对象中的this指向决定于函数被调用的方式。用法apply,call 与 bind 均可以转变函数对象中this的指向,在说区分之前还是先总结一下三者的相像之处 1、都是用来转变函数的this对象的指向的。
2、第一个参数都是this要指向的对象。
3、都可以利用后续参数传参。
call方法 语法callthisObj,arg1,arg2,,.argN 定义调用一个对象的一个方法,以另一个对象替换当前对象。
说明call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文转变为由 thisObj 指定的新对象。
假如没有供应 thisObj 参数,那么 Global 对象被用作 thisObj。
apply 语法applythisObj,数组参数)定义应用某一个对象的一个方法,用另一个对象替换当前对象 说明假如参数不是数组类型的,则会报一个TypeError错误。
bind 在EcmaScript5中扩展了叫bind的方法(IE6,7,8不支持),bind与call很相像,,例如,可接受的参数都分为两部分,且第一个参数都是作为执行时函数上下文中的this的对象。不同点有两个 bind的返回值是函数;后面的参数的用法也有区分; 先看例子一 function adda,b alerta b; function suba,b alerta - b; 对于,call,可以这么用 add.callsub,3,1;结果为4 对于,apply,可以这么用; add.applysub,3,1;结果为4 对于,bind,可以这么用 add.bindsub3,1;结果为4 可以看到输出结果都一样,但是传参用法不一样; 再看例子二 function jonename,age,work this.namename; this.ageage; this.workwork; this.sayfunctionmsg alertmsg,我叫this.name,我今年this.age岁,我是this.work var jack namejack,age24,work同学 var petnew jone; pet.say.applyjack,欢迎您 console.logthis.name 对于call,需要这样 pet.say.calljack,欢迎您 对于apply,需要这样 pet.say.applyjack,欢迎您 对于bind,需要这样 pet.say.bindjack,欢迎您 此时输出console.logthis.name,发觉this.name为jack,this上下文已经发生转变了; 以上这篇关于JS中的apply,call,bind的深化解析就是我分享给大家的全部内容了,盼望能给大家一个参考 ...