作家
登录

JS高级程序设计高级技巧

作者: 来源: 2017-09-05 09:19:53 阅读 我要评论

  1. Function.prototype.curry = function() { 
  2.     let defaultArgs = arguments; 
  3.     let that = this; 
  4.     return function(){ 
  5.         return that.apply(null,  
  6.                           arguments.concat(defulatArgs)); 
  7.     } 

然则因为参数不是一个数组,没有concat函数,所以须要把伪数组转成一个伪数组,可以用Array.prototype.slice:

ES7新增了两个新的属性async/await用于处理的异步的情况,让异步代码的写法就像同步代码一样,如下async版本的sleep:

  1. Function.prototype.curry = function() { 
  2.     let slice = Array.prototype.slice; 
  3.     let defaultArgs = slice.call(arguments); 
  4.     let that = this; 
  5.     return function() { 
  6.         return that.apply(null,  
  7.                           arguments.concat(slice.call(defulatArgs))); 
  8.     } 

如今举一下柯里化一个有效的例子,当须要把一个数组降序排序的时刻,须要如许写:

  1. let data = [1,5,2,3,10]; 
  2. data.sort((a, b) => b - a); // [10, 5, 3, 2, 1] 

给sort传一个函数的参数,然则如不雅你的降序操作比较多,每次都写一个函数参数照样有点烦的,是以可以用柯里化把这个参数固化起来:

  1. Array.prototype.sortDescending =  
  2.                  Array.prototype.sort.curry((a, b) => b - a); 

如许就便利多了:

  1. let data = [1,5,2,3,10]; 
  2. data.sortDescending(); 
  3.   
  4. console.log(data); // [10, 5, 3, 2, 1] 

每次履行都要setTimeout一下,如不雅触发得很快就把上一次的setTimeout清掉落从新setTimeout,如许就不会履行很快了。然则如许有个问题,就是这个回调函数可能永远不会履行,因为它一向在触发,一向在清掉落tId,如许就有点难堪,膳绫擎代码的本意应当是100ms内最多触发一次,而实际情况是可能永远不会履行。

有一个比较有趣的现象是ES6的class也是返回function:

5. 防止修改对象

有时刻你可能怕你的对象被误改了,所以须要把它保护起来。

(1)—Object.seal防止新增和删除属性

如下代码,当把一个对象seal之后,将不克不及添加和删除属性:

  1. let scriptBegin = Date.now(); 
  2. fun1(); 
  3. fun2(); 
  4.   
  5. // 须要履行20ms的工作单位 
  6. function act(functionName) { 
  7.     console.log(functionName, Date.now() - scriptBegin); 
  8.     let begin

      推荐阅读

      为了合成让人类听懂的语音,机器做了哪些“深度学习”?

    深度进修在2006年开端崭露头脚后,近几年取得了飞速的成长,无论是学术研究照样企业应用均出现出指数级增长的趋势;伴跟着这项技巧的赓续成熟,深度进修在智能语音范畴率先发力,取得一系列>>>详细阅读


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

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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