亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

JS函數之不要隨便bind

標簽:
JavaScript

JavaScript在ES5中加了个Function.prototype.bind,可以绑定当前对象,于是就不需要再放一个变量来保存this了,在需要使用this的情况下会很方便。

那么Function.prototype.bind到底是怎么实现的呢?原生的实现先不说,Polyfill是我们可以看到的(参考

不难看出,我们得到的其实是一个全新的函数!原函数被封装起来了,然后在调用的时候强制为它指定this
从结果上来看,浏览器原生的Function.prototype.bind也是如此。
CoffeeScriptfat arrow=>)实现的绑定比这个轻量一些,但也是需要将原函数和当前对象存起来,并返回一个新的函数:

func = (a) => doSomething(a)var func = (function(_this) {  return function(a) {    return doSomething(a);
  };
})(this);

那么为什么不要滥用呢?
我测试了一下浏览器原生的Function.prototype.bind,发现使用了bind之后,函数的内存占用增加了近2倍!CoffeeScript实现的绑定稍微轻量一点,内存占用也增加了1倍多。

再顺便测试了下ES6新增的Arrow function(也是=>),因为这个特殊函数是自带绑定技能的,结果惊奇地发现,它的内存占用和普通的Function没啥区别。所以以后需要或者不需要bind的场景如果一定要滥用bind图个安心的话,可以通通上高逼格的箭头函数。:)



作者:寂寞的原子
链接:https://www.jianshu.com/p/45515682be0d


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消