犀利的js 函数集合


Posted in Javascript onJune 11, 2009

那么分享几个理想状态的js原型函数。大部分整理修改自月影的blog
另外推荐一下月影的书——"王者归来",如果你每周js的coding时间大于5小时,还是值得一读的。
1.函数胶水,有很多同学用jq用习惯了,有时就为一个类似于c#里的event+=delegate而用jq,似乎有点划不来,这几原型函数就够了。

Function.prototype.$concat = function(){ 
var funcs = [this].concat(Array.apply([], arguments)); 
return function(){ 
var ret = []; 
for(var i = 0; i < funcs.length; i++){ 
var func = funcs[i] instanceof Function ? funcs[i] : new Function(funcs[i]); 
ret.push(func.apply(this, arguments)); 
} 
return ret; 
} 
} 
//var concat = (function a(a){ 
// alert("a:"+a); 
//}).$concat(function b(b){ 
// alert("b:"+b); 
//}); 
//concat(1);

2.函数柯灵化,柯灵化是面向函数式语言的一个重要特性,和大部分人所持有的面向过程的编程思想区别很大,就我愚见,日常工作中,函数柯灵化除了能把一些代码写得优雅(或许还有诡异)以外,不是特别的"必要"。
Function.prototype.$curry=function(){ 
with({that:this}) 
return function() 
{ 
var args = Array.prototype.slice.call(arguments); 
if(args.length<that.length) 
{ 
return function(){ 
var _args = args.concat(Array.prototype.slice.call(arguments)); 
return that.$curry().apply(this,_args); 
} 
} 
else return that.apply(this,args); 
} 
} 
//var curry=(function f(a,b,c){ 
// alert([a,b,c]); 
// }).$curry(); 
//curry(1)(2)(3); 
//curry(1,2)(3);

3.对象闭包。这个词是我造的,不过看一下注释里的调用便可以理解,这个函数原本是为了证明with和闭包的等价性,但却提供了一个极有价值的模式。
Function.prototype.$bind=function(object){ 
var callback = function () { 
return arguments[0]; 
} 
with(object){ 
return eval('callback(' + this.toString() + ')'); 
} 
} 
//var obj = {a:1,b:2}; 
//var bind=(function (){ 
// a=10; 
// b=11; 
//}).$bind(obj); 
//bind(); 
//alert(obj.a);

4. string.Format。怕是很多js coder都想有一个c#(java类似)里的string.Format方法,其实一点也不麻烦。
String.prototype.$format=function(){ 
var ret; 
for(var i=1;i<arguments.length;i++){ 
var exp = new RegExp('\\{' + (i-1) + '\\}','gm'); 
ret = (ret||this).replace(exp,arguments[i-1]); 
} 
return ret; 
} 
//alert("{0},{1},{4}".$format(0,1,2));

以后有机会还会陆续分享一些这样犀利的函数。暂且给些函数合计取个名字,就叫 p.js 吧。
Javascript 相关文章推荐
javascript 设置文本框中焦点的位置
Nov 20 Javascript
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
Jun 20 Javascript
node.js下when.js 的异步编程实践
Dec 03 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
Aug 10 Javascript
JS封装通过className获取元素的函数示例
Dec 20 Javascript
canvas绘制万花筒效果(代码分享)
Jan 20 Javascript
前端分页功能的实现以及原理(jQuery)
Jan 22 Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 Javascript
傻瓜式vuex语法糖kiss-vuex整理
Dec 21 Javascript
vue给对象动态添加属性和值的实例
Sep 09 Javascript
vue项目中定义全局变量、函数的几种方法
Nov 08 Javascript
js 操作css实现代码
Jun 11 #Javascript
图片连续滚动代码[兼容IE/firefox]
Jun 11 #Javascript
Javascript Tab 导航插件 (23个)
Jun 11 #Javascript
javascript 树控件 比较好用
Jun 11 #Javascript
javascript 禁止复制网页
Jun 11 #Javascript
JavaScript 动态改变图片大小
Jun 11 #Javascript
jQuery 学习 几种常用方法
Jun 11 #Javascript
You might like
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
js实现日历与定时器
2017/02/22 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
Python contextlib模块使用示例
2015/02/18 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Python生成器以及应用实例解析
2018/02/08 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
Django单元测试工具test client使用详解
2019/08/02 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
python3.8下载及安装步骤详解
2020/01/15 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
学前教育专业毕业生自荐信
2013/10/03 职场文书
销售工作岗位职责
2013/12/24 职场文书
大学生咖啡店创业计划书
2014/01/21 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
2015年档案室工作总结
2015/05/23 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书