日期:2014-05-16 浏览次数:20431 次
var Application=function(a){
   a=a||{};  //"||"是或逻辑,其意思是当左边的为false时(“||”会自动转为boolean判断),用右边的表达式
   /* 相当于
   if(a){
      a={};
   }else{
       a=a;
   }*/
   if(!(a.id&&a.width&&a.height)){return}//判断DOM对象是否存在,如果不存在就直接返回
 
   var _specificMenu=[];//声明一个数组
   var a=_specificMenu[name1]; //将对应name1的值赋给a对象,因为数组中并没有name1的值,所以返回空
   _specificMenu.name1=[...] ;//为name1进行数组嵌套赋值
}
------解决方案--------------------
对于函数的参数  可以通过内置方法获取参数个数 arguments.length;  arguments[0]第一个参数值
函数可以定义多个参数,调用的时候可以只写一部分  按照顺序匹配  为定义的则为空
new Element({a:b,b:a,y:g})  实例化一个对象 
{a:b,b:a,y:g}  是这个构造函数的参数   {……}定义一个对象
a:b  a表示属性名  b表示属性对应的值
比如var o = {a:b,b:a,y:g} ;   那么o.a就等于b
------解决方案--------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
 </head>
<script type="text/javascript">
//1.因为看到有的方法的定义及数组数据的添加都放在最后面,但在前面就开始调用了,这样算什么?不要紧么?
/*
    在回答这个问题前,LZ应该知道JS中的“词法作用域”的问题。
    如果不知道,我简单的讲解一下,不过深的研究还是要自己的去搜索。
    司法作用域, 在函数被执行前,JS内核已经用一个链表确定了这个函数的执行过程中被声明的变量,函数等,并且所有变量都未被初始化。
    展示一下链表内容,在fn中有arr数组,及一个函数对象say。
*/
function fn(){
   say();  //hello world  因为say在执行已经被知道,所以可以执行,.
   document.write(arr[0]);  //空指针异常, arr在执行已经被知道,但是没有被初始化,arr[0]指向一个null会被报错
   var arr=[1,2,3,4];
   function say(){
      document.write("helloworld");
   }
}
//fn();  
/*2.function addMenu(参数1,参数2,参数3,参数4) //定义了4个参数
  {...}
看到有的方法定义了4个参数,但是在有时调用的时候他却只给3个参数,可以这样的吖
*/
/*
    这个问题要的核心在于arguments这个类数组,让我们来看看function addMenu(参数1,参数2,参数3,参数4) JS怎么样解释
    arguments=[参数1,参数2,参数3,参数4];
    如果其中一些没有被传入,那么也就是这样arguemnts=[参数1,参数2];
    看看下面一个例子,希望你能懂。
*/
    function fn2(arg1,arg2,arg3,arg4){
        document.write("-------this is fn2 method!!-----<br/>");
    document.write("arg1:"+arguments[0]+"<br/>");
    document.write("arg2:"+arguments[1]+"<br/>");
    document.write("arg3:"+arguments[2]+"<br/>");
    document.write("arg4:"+arguments[3]+"<br/>");
}
 fn2(1,2,3,4);
 fn2(1,2);
    function fn3(){
        document.write("-------this is fn3 method!!-----<br/>");
    document.write("arg1:"+arguments[0]+"<br/>");
    document.write("arg2:"+arguments[1]+"<br/>");
    document.write("arg3:"+arguments[2]+"<br/>");
    document.write("arg4:"+arguments[3]+"<br/>