一直没有系统的学习下javascript,经常会在开发或阅读文章时对js里的一些比较底层的概念难倒.还是应该做个笔记总结下好. 1.Namespace 命名空间,使用目的是为了防止项目的function或变量命名冲突.//先定义 YAHOO// JavaScript Documentif (typeof YAHOO == "undefined" || !YAHOO) { var YAHOO = {};}YAHOO.namespace = function() { var a=arguments, o=null, i, j, d; for (i=0; i<a.length; i=i+1) { d=a[i].split("."); o=YAHOO; for (j=(d[0] == "YAHOO") ? 1 : 0; j<d.length; j=j+1) { o[d[j]]=o[d[j]] || {}; o=o[d[j]]; } } return o;};//使用YAHOO.GetClassName=function(num){ switch (num){ case 1: return "typeTd1";break; case 2: return "typeTd2";break; case 3: return "typeTd3";break; }}2.arguments arguments:表示传入函数的参数
callee:表示函数和函数主体的语句
caller:表示调用该函数的函数
例: 
 functionb(x,y)
{
  alert(arguments[0]);// m
alert(arguments.callee);// b
alert(arguments.caller);//a
}
function a()
       {
               b(m,n);
        }
 
3. 指定函数的调用对象 call ,apply
function fun(a,b){alert(this);return a+b;
}
var obj={};fun.call(obj,1,2);   //通过obj对象来调用fun函数,并传入2个参数,弹出的指针为obj对象。 var obj={};
function fun_1(x,y){   function fun_2(a,b){     return a+b;
  }fun_2.apply(obj,arguments);  //用fun_1的arguments对象来传参,实际上是接收了x,y
} apply方法与call方法唯一不同的地方是函数传参方式不同。apply用数组式.4.(function(){ //do something})();声明并立即运行匿名函数被称为”自执行函数“,自执行函数经常用于封装一段js代码。由于函数作用域的特点,自执行函数内的变量无法被外部访问,放在函数内的代码不会对外面的代码产生影响,可以避免造成变量污染