当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 犀利的js 函数集合

Javascript
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
JavaScript 撑出页面文字换行
JavaScript 高级语法介绍
Javascript 表格操作实现代码
javascript 获取鼠标的绝对位置 event
Input 特殊事件onpopertychange和oninput
javascript 一段左右两边随屏滚动的代码
JS 分号引起的一段调试问题
根据服务器时间作为起始,显示时钟的小程序
js 匿名调用实现代码
javascript 缓冲效果 实现代码
javascript htmlencode函数(ff兼容版) 主要是编辑器中反转html代码
javascript 获取radio的value的函数 [已测]
Javascript 代码也可以变得优美的实现方法
使弱类型的语言JavaScript变强势
js 单引号 传递方法
利用WebBrowser彻底解决Web打印问题(包括后台打印)
web 页面分页打印的实现
可以拖动的div 实现代码
WordPress 照片lightbox效果的运用几点

Javascript 中的 犀利的js 函数集合


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 241 ::
收藏到网摘: n/a

和同事讨论js时,我说较为理想的状态是,把js当一把好用的匕首,随手拿来,捅一刀子就走。话虽如此,但现实生活中大部分时候的情况是不理想的。 那么分享几个理想状态的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 吧。