JavaScript的漂亮的代码片段
动态构建正则表达式
newRegExp(Expr.match[type].source+(/(?![^\[]*\])(?![^\(]*\))/.source))
来自sizzle,动态构建正则时,这样做避免了字符转义。
更灵活和巧妙的数字补零
functionprefixInteger(num,length){
return(num/Math.pow(10,length)).toFixed(length).substr(2);
}
取数组的最大和最小值
产生漂亮的随机字符串 相对于 转换为数值并取整 varvalues=arguments; returnformat.replace( 交换两个变量的值 RegExpLooping "Hello{0},How{1}".format("Bob","youdoin"); 定义即运行函数 这确实是最简单的技巧,但也是最实用的技巧。奠定了JavaScript封装的基础。 三元运算 一种函数注册-调用机制 来自CKEditor,我做了提取。 "removeFunction":function(index){ "callFunction":function(index){ //调用 短路运算
Math.max.apply(Math,[1,2,3])//3
Math.min.apply(Math,[1,2,3])//1
Math.random().toString(16).substring(2);//8位
Math.random().toString(36).substring(2);//16位
获取时间戳
vartimeStamp=(newDate).getTime();
如下方式更方便:
vartimeStamp=Number(newDate);
varresult="3.1415926"|0;//3
字符串格式化
functionformat(format){
if(!FB.String.format._formatRE){
FB.String.format._formatRE=/(\{[^\}^\{]+\})/g;
}
FB.String.format._formatRE,
function(str,m){
var
index=parseInt(m.substr(1),10),
value=values[index+1];
if(value===null||value===undefined){
return"";
}
returnvalue.toString();
}
);
}
使用:
format("{0}.facebook.com/{1}","www","login.php");
//->www.facebook.com/login.php
varfoo=1;
varbar=2;
foo=[bar,bar=foo][0];
String.prototype.format=function(/*args*/){
varargs=arguments;
returnthis.replace(
/\{(\d+)\}/g,
function(full,idx){
returnargs[idx];
})
}
//=>HelloBob,Howyoudoinhttp://mazesoul.github.com/Readability_idioms_and_compression_tolerance/#31.0
(function(){
//dosomething
})();
varsome=con1?val1:
con2?val2:
con3?val3:
defaultVal;
(function(){
varfns=[];
//将可用下标访问属性的对象转换成数组
//注意,IE下DOMNodeList会失败
functiontoArray(arrayLike,index){
returnArray.prototype.slice.call(arrayLike,index||0);
}
window.Util={
"addFunction":function(fn,scope){
returnfns.push(function(){
returnfn.apply(scope||window,arguments);
})-1;
},
fns[index]=null;
},
varfn=fns[index];
returnfn&&fn.apply(window,toArray(arguments,1));
}
};
})();
//应用场景
varfnId;
//在闭包中,添加一个可供全局调用的函数
(function(){
fnId=Util.addFunction(function(msg){
alert(msg);
});
})();
Util.callFunction(fnId,"Hello,World");//->"Hello,World";
varsomething="xxxx";
console.log(true&&something);//->"xxx";
console.log(false&&something);//->false
console.log(true||something); //->true
console.log(false||something); //->something
相关文章