犀利的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 11 Javascript
Js获取事件对象代码
Aug 05 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
May 23 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
Oct 22 Javascript
jquery实现华丽的可折角广告代码
Sep 02 Javascript
seajs中模块依赖的加载处理实例分析
Oct 10 Javascript
Node.js使用cookie保持登录的方法
May 11 Javascript
JS实现判断图片是否加载完成的方法分析
Jul 31 Javascript
Angular异步变同步处理方法
Aug 13 Javascript
解决layer弹出层自适应页面大小的问题
Sep 16 Javascript
vue和小程序项目中使用iconfont的方法
May 19 Javascript
JavaScript实现烟花绽放动画效果
Aug 04 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教程 基本语法
2009/10/23 PHP
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
php微信开发之关注事件
2018/06/14 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP7 弃用功能
2021/03/09 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
学习Vue组件实例
2018/04/28 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
python入门基础之用户输入与模块初认识
2016/11/14 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
windows下python和pip安装教程
2018/05/25 Python
Python函数参数操作详解
2018/08/03 Python
python实现贪吃蛇小游戏
2020/03/21 Python
Python OpenCV实现视频分帧
2019/06/01 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
Python 创建TCP服务器的方法
2020/07/28 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
护理专业求职信
2014/06/15 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
保护环境的宣传语
2015/07/13 职场文书
大学副班长竞选稿
2015/11/21 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python