同情楼主,google一下相关资料
Javascript 有两个种定义Function的方法。例如 function a(){alert("a")}
 var a = function(){alert("a")}

解决方案 »

  1.   

    test1 是一个对象 它包含一个pintof方法.而initTest是用来初始化这个对象.
    因为这样写便于使用和维护.
      

  2.   

    你对JS的函数/变量等常用的概念了解后还要注意其面向对象的概念;
    因为javascript里并不十分明确清晰的区分方法/属性/构造/析构...,也就是说它把这些概念都混杂在了一起,所以阅读起来要费些脑细胞了,呵呵;
    看看这里不知道对你有没有帮助http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/default.aspx?loc=zh
      

  3.   

    这个有点变态  估计是故意这样写的printof是test1的一个属性,只是这个属性是个函数,但这函数就返回了一个变量
    写的太麻烦了  可以简单的
      

  4.   

    to mingxuan3000 :
    我是改了函数体的,只是把他这个结构弄过来问的
    要是我直接复制他那个函数来问的话估计会超出帖子字数限制^_^
      

  5.   

    <script type="text/javascript">
    <!--
    var myDog = {
        "name": "Spot",
        "bark": function(param) { alert("Woof!"+param); },
        "displayFullName": function() {
            alert(this.name + " The Alpha Dog");
        },
        "chaseMrPostman": function() { 
            // implementation beyond the scope of this article 
        }    
    };myDog.bark('haha');
    //-->
    </script>
    myDog就是test1它拥有name属性和bark,chaseMrPostman,displayFullName三个方法.
    这里的bark就是你的printof.这是创建方法的另一种方式.当然可以附带参数.
    "bark” : function(param) { alert(“Woof!”+param); },
      

  6.   

    太好了
    SysTem128 :
    请问你这个是你写的么?太好了啊!
    你有没有相关的资料啊?能给我一份么?谢谢
      

  7.   

    http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/default.aspx?loc=zh 
    里的一段改了下-_-!
    源例没有带参数的方法.
      

  8.   

    //和以下一样
    function initTest(){ 
         test1   =   { 
              printof   :   function   (){ 
               return   'bbbb'; 
               }
         } 
    }//或者
    function   initTest(){ 
    test1   =   new Object();
    test1.printof = function   (){ 
         return   'bbbb'; 
         }   
      

  9.   


    function  initTest(){ //@1
      test1 = (function(){ //@2
        return {
               printof : function(){ //@3
                  return 'bbbb'; 
               } //@3 end
       }   
      })(); //@2 end 
    } //@1 endinitTest(); 
    alert(test1.printof()); 
    这样排版看这顺眼了吧?
    从头到尾说一下吧,
    initTest,这个不用说了,是最常规的写法。@1定义个initTest函数再来看@2,js里有个立即执行符号"()"[学名忘记怎么说了,反正意思就是立马执行]。他的用法是:(function(v){
    v();
    })(function(){
    alert('v')
    });
    //这样写的话,就表示立即执行这个函数,结果"弹出v".
    @2 定义一个test1函数,并且初始化。@3 这里又是一种函数的定义方法(如果理解成对象更好),但这种定义方法必须包含在{}内,例如:var v = {
      _init : function() {
         alert('function init!');
      },
      _str : 'string _str'
    };
    //这里定义了一个对象v,里面包含一个_init函数和一个_str字符串。
    //可以通过这样调用。例如,alert(v._str); 弹出"string _str";
    下面两句就很好理解了,
    initTest(); 
    执行initTest()函数,由于里面有个立即执行函数,所以就会在产生一个名为text1函数(对象)。
    alert(test1.printof()); 
    弹出text1内的printof函数,这个printof返回一个字符串"bbbb",所以结果当然是,弹出bbbb了。回答问题,
    1:printof是一个啥?
    printof是test1对象内的一个子项,好拗口啊,你理解就好。绝非switch.2:他们当初为什么要这样写? 
    这个就不好回答了,必须拿出他的具体应用,就这个例子来说,这样写是为了搞坏一些人的脑袋或者想炫耀技术多么牛。3:从哪里去学这样的写法?
    不必刻意的学。这样的写法谁会欢迎?
      

  10.   

    function   initTest(){ 
    //定义私有变量test1,将执行一匿名函数;
    test1   =   (function(){ 
    return   { 
        printof   :   function   (){ 
        return   'bbbb'; 
        } 
        }   
      })(); 
    //返回对象,该对象具有printof属性,printof为函数,该函数返回string 'bbbb'
    } initTest();//运行initTest函数,将初试test1到window对象
    alert(   test1.printof()); //执行test1的printof函数,将返回'bbbb'不BT啊
      

  11.   

    //定义私有变量test1,将执行一匿名函数;这里误解了,如果是 var test1 = 就是定义私有变量;
    这里应该是定义全局变量;
      

  12.   

    如果一个类直接调用,理论上讲,window就可以看作是这个类的实例,所以这里可以直接访问test1。
      

  13.   

    谢谢shaguarof3d这么耐心的回复,谢谢