1.arguments.callee表示function对象对自身的引用
例如:var a=function(){
if(!arguments.callee.id) //当该函数对象不存在id属性时,初始化id=0
arguments.callee.id = 0;
return arguments.callee.id++;
}
arguments.callee代表的就是函数对象a,这有利于匿名函数的递归或确保函数的封装性.
2.我们常常使用jquery等javascript库,这些js库是如何避免变量与我们程序自己命名的变量发生冲突的呢?
(function (param) //param 形参
{
...//function body 函数体代码
}
)( actuallParam);//actuallParam 实参
很多js库都会使用上面的形式,这样js库中所用的变量都是同一个作用域中,可以避免变量冲突。
深度克隆的代码如下(深克隆去掉递归即为浅克隆):
Object.prototype.clone = function(){
var o = this.constructor === Array ? [] : {};
for(var e in this){
o[e] = typeof this[e] === "object" ? this[e].clone() : this[e];
}
return o;
}
Javascript字符串转数字,最简洁的方法
function maxnum(arr)
{
return +(arr.sort(mycompare).join(""));
}
function mycompare(a,b)
{
var aa=a+"",bb=b+"";
return (bb+aa)-(aa+bb);
}
var arr=[5,6,11,7]
alert(maxnum(arr));//76511