犀利的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 核心参考教程 内置对象
Oct 13 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
Apr 02 Javascript
JavaScript中具名函数的多种调用方式总结
Nov 08 Javascript
JavaScript判断表单为空及获取焦点的方法
Feb 12 Javascript
基于JavaScript实现在新的tab页打开url
Aug 04 Javascript
详解vue之页面缓存问题(基于2.0)
Jan 10 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
Mar 10 Javascript
vue2.X组件学习心得(新手必看篇)
Jul 05 Javascript
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 jQuery
小程序如何支持使用 async/await详解
Sep 12 Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
Dec 13 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/05/27 PHP
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
javascript实现数独解法
2015/03/14 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
[29:59]完美世界DOTA2联赛PWL S3 Forest vs access 第二场 12.11
2020/12/13 DOTA
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
Python sorted对list和dict排序
2020/06/09 Python
python开发一款翻译工具
2020/10/10 Python
运动会广播稿150字
2014/02/19 职场文书
我的画教学反思
2014/04/28 职场文书
一年级小学生评语大全
2014/12/25 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
决心书格式范文
2015/09/23 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书