犀利的js 函数集合
犀利的js 函数集合
发布时间:2016-12-30 来源:查字典编辑
摘要:那么分享几个理想状态的js原型函数。大部分整理修改自月影的blog另外推荐一下月影的书——"王者归来",如果你每周js的coding时间大于...

那么分享几个理想状态的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教程学习
编程开发子分类