- 需求:最近面试,面试官问能不能现场比划一个bind函数。
- 小哥哥有一个很好的习惯就是从来不着急写代码,既然有了需求那咱就来分析分析它 !
- 我们先要想一下Function.prototype.bind 函数可以实现那些功能 。
- 改变this指向
- 这个 bind 还可以传参,fn.bind(obj,...arg)
- 返回了一个函数 ,并且不立即执行,这就是bind,和call,apply的区别吧?
注意:前方高能,小生不才,哪里写的不到位希望各位看官指正。
- 废话不说,有了需求,我们也分析了需求,撸呗。
//有逼格一点,咱也来个原型链编程 Function.prototype.myBind = function (target) { var target = target || window //返回函数需要用到的参数 var outArgs = [].slice.call(arguments, 1) //返回的那个函数 var fn = () => { //返回的这个函数在执行的时候,还有可能在传参,我们把它拿出来 var innArgs = [].slice.call(arguments, 0) //最后执行这个函数呗 return this.apply(target, outArgs.concat(innArgs)) } return fn } var name = "我真的很帅" var obj = { name: "我很帅" } function testBind() { console.log(this.name) } var test = testBind.myBind(obj) console.log(test()) //我很帅,哇塞,this指向改变了,也返回了一个函数,功能实现
- 第一次写文章,有啥不对的地方希望大家指正,以后我会每天写一点小东西,把自己掌握的东西分享出来。
javaScript之 bind
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- SSM框架的Web程序主要用到了三个技术: 1.Spring:用到了注解和自动装配,就是Spring的两个精髓IO...