犀利的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 相关文章推荐
合并table相同单元格的jquery插件分享(很精简)
Jun 20 Javascript
JS动态增加删除UL节点LI及相关内容示例
May 21 Javascript
用js传递value默认值的示例代码
Sep 11 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
Mar 23 Javascript
JavaScript类型系统之Object详解
Jan 07 Javascript
JS组件Bootstrap Table使用方法详解
Feb 02 Javascript
AngularJS入门教程之AngularJS表达式
Apr 18 Javascript
Bootstrap框架下下拉框select搜索功能
Mar 26 Javascript
jQuery之动画效果大全
Nov 09 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
Jan 12 Javascript
详解Node.js利用node-git-server快速搭建git服务器
Sep 27 Javascript
JavaScript 绘制饼图的示例
Feb 19 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
php四种基础算法代码实例
2013/10/29 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
JavaScript Prototype对象
2009/01/07 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
大学在校生求职信范文
2013/11/21 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
演讲稿的写法
2014/05/19 职场文书
CAD实训总结范文
2015/08/03 职场文书
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS