• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 网页制作 > JavaScript >

用函数式编程技术编写优美的 JavaScript(3)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-02-07点击:

  清单 13 中的代码风格通常被用来从数组生成动态 HTML。

  清单 13. 生成动态 HTML 的普通代码

  1. var str=' '
  2. for (var i=0;i<arr.length;i++) { 
  3.   var element=arr[i]; 
  4.   str+=... HTML generation code... 
  5. document.write(str); 

  可以用 清单 14 的代码替换这个代码。

  清单 14. 生成动态 HTML 的通用方式

  1. Array.prototype.fold=function(templateFn) { 
  2.   var len=this.length; 
  3.   var str=' '
  4.   for (var i=0 ; i<len ; i++)  
  5.     str+=templateFn(this[i]); 
  6.   return str; 
  7.  
  8. function templateInstance(element) { 
  9.   return ... HTML generation code ... 
  10.  
  11. document.write(arr.fold(templateInstance)); 

  我使用 Array 类型的 prototype 属性定义新函数 fold。现在可以在后面定义的任何数组中使用该函数。

  系列函数的应用

  考虑以下这种情况:想用一组函数作为回调函数。为实现这一目的,将使用 window.setTimeout 函数,该函数有两个参数。第一个参数是在第二个参数表示的毫秒数之后被调用的函数。清单 15 显示了完成此操作的一种方法。

  清单 15. 在回调中调用一组函数

  1. window.setTimeout(function(){alert(‘First!’);alert(‘Second!’);}, 5000); 

  清单 16 显示了完成此操作的更好的方式。

  清单 16. 调用系列函数的更好的方式

  1. Function.prototype.sequence=function(g) { 
  2.   var f=this
  3.   return function() { 
  4.     f();g(); 
  5.   } 
  6. }; 
  7. function alertFrst() { alert(‘First!’); } 
  8. function alertSec() { alert(‘Second!’); } 
  9. setTimeout( alertFrst.sequence(alertSec), 5000); 

  在处理事件时,如果想在调用完一个回调之后再调用一个回调,也可以使用 清单 16 中的代码扩展。这可能是一个需要您自行完成的一个练习,现在您的兴趣被点燃了吧。

  结束语

  在许多领域中都可以应用 JavaScript 中的函数式编程,以优美的方式完成日常活动。这篇文章中的示例只介绍了几种情况。如果您找到了函数式编程的合适场景,并应用这些概念,那么您就会有更多的理解,并且可以增加您的优美程度。

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ