犀利的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 设计模式 安全沙箱模式
Sep 24 Javascript
解析jquery获取父窗口的元素
Jun 26 Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
22点关于jquery性能优化的建议
May 28 Javascript
JavaScript中的Repaint和Reflow用法详解
Jul 27 Javascript
JavaScript数值千分位格式化的两种简单实现方法
Aug 01 Javascript
正则表达式替换html元素属性的方法
Nov 26 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
Mar 07 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 Javascript
Vue路由跳转问题记录详解
Jun 15 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
Oct 09 Javascript
关于在LayUI中使用AJAX提交巨坑记录
Oct 25 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
Function eregi is deprecated (解决方法)
2013/06/21 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
php实现websocket实时消息推送
2018/03/30 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
jquery 简单导航实现代码
2009/09/11 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
Django中反向生成models.py的实例讲解
2018/05/30 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
Python tkinter常用操作代码实例
2020/01/03 Python
windows下python安装pip方法详解
2020/02/10 Python
Python基于requests库爬取网站信息
2020/03/02 Python
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
自主招生自荐信范文
2013/12/04 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
工程质量承诺书范文
2014/03/27 职场文书
高中班级口号
2014/06/09 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
单位推荐信范文
2015/03/27 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python