作家
登录

JavaScript高级程序设计高级技巧

作者: 来源: 2017-09-05 09:47:02 阅读 我要评论

  •     } 
  •     handleMouseClick(event) { 
  •         this.points.push(event.latLng); 
  •     } 
  •     init() { 
  •         $map.on('click', this.handleMouseClick); 
  •     } 
  • 相对于简单的Promise版本,sleep的实现照样没变。不过在调用sleep的前面加一个await,如许只有sleep这个异步完成了,才会接下落行下面的代码。同时须要把代码逻辑包在一个async标记的函数琅绫擎,这个函数会返回一个Promise对象,当琅绫擎的异步都履行完了就可以then了:

    1. class DrawTool { 
    2.     constructor() { 
    3.         this.points = []; 
    4.     } 
    5.     handleMouseClick(event) { 
    6.         this.points.push(event.latLng); 
    7.     } 
    8.     init() { 
    9.         let that = this; 
    10.         $map.on('click', event => that.handleMouseClick(event)); 
    11.     } 

    因为回调函数是用that履行的,而that是指向DrawTool的实例子,是以就没有问题了。相反如不雅没有that它就用的this,所以就要看this指向哪里了。

    因为我们用了箭头函数,而箭头函数的this照样指向父级的高低文,是以这里不消本身创建一个闭包,直接用this就可以:

    1. init() { 
    2.     $map.on('click',  
    3.             event => this.handleMouseClick(event)); 

    这种方法加倍简单,第二种办法是应用ES5的bind函数绑定,如下代码:

    1. init() { 
    2.     $map.on('click',  
    3.             this.handleMouseClick.bind(this)); 
    1. function throttle(method, context) { 
    2.     if (method.tId) { 
    3.         return
    4.     } 
    5.     method.tId = setTimeout(function() { 
    6.         method.call(context); 
    7.         method.tId = 0; 
    8.     }, 100); 
    1. Function.prototype.bind = function(context) { 
    2.     return () => this.call(context); 

    就是返回一个函数,这个函数的this是指向的原始函数,然后让它call(context)绑定一下履行高低文就可以了。

    4. 柯里化

    柯里化就是函数和参数值结合产生一个新的函数,如下代码,假设有一个curry的函数:

    1. function

        推荐阅读

        JS高级程序设计高级技巧

      本篇是看的《JS高等法度榜样设计》第23章《高等技能》做的读书分享。本篇按照书里的思路根据本身的懂得和经验,进行扩大延长,同时指出版里的一些问题。将会评论辩论安然的类型检测、惰性>>>详细阅读


      本文标题:JavaScript高级程序设计高级技巧

      地址:http://www.17bianji.com/lsqh/37134.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)