犀利的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 相关文章推荐
图片按比例缩放函数
Jun 26 Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
Jun 04 Javascript
js 操作select与option(示例讲解)
Dec 20 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
Dec 27 Javascript
JavaScript设计模式之单例模式实例
Sep 24 Javascript
详解vue.js的事件处理器v-on:click
Jun 27 Javascript
详解vue-cli3 中跨域解决方案
Apr 10 Javascript
vue eslint简要配置教程详解
Jul 26 Javascript
vue2.0项目集成Cesium的实现方法
Jul 30 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
Aug 31 Javascript
Vue实现返回顶部按钮实例代码
Oct 21 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的字符串用法小结
2010/06/08 PHP
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
详解php的socket通信
2015/08/11 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
python中定义结构体的方法
2013/03/04 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
pycharm的python_stubs问题
2020/04/08 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
法国家具及室内配件店:home24
2017/01/21 全球购物
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
伦敦一卡通:The London Pass
2018/11/30 全球购物
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
上海天奕面试题笔试题
2015/04/19 面试题
介绍一下UNIX启动过程
2013/11/14 面试题
打造完美自荐信
2014/01/24 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
2015大学迎新标语
2015/07/16 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
导游词之山东八大关
2019/12/18 职场文书