解决方案 »

  1.   

    (function(c){})(window):这样的写法 就是吧 自己定义的方法合并到window里 ,c是指window对象,调用的时候就想调用window自带的方法一样 , 就像(function($){})(jquery)把自己写的方法合并到jquery库一样。
    RSAKeyPair:并不是一个对象 ,只是给c定义的一个属性。c是指window对象。 c.RSAKeyPair = c.RSAKeyPair || g  是给属性赋值,第一次赋值时候把方法g赋值给该属性。 c.BigTools 这个 BigTools也应该是自定义的 。
      

  2.   

    (function(c) {
           function g(){
           }       c.RSAKeyPair = c.RSAKeyPair || g
    })(window);LZ理解一下这一段, . 这一段的意思是, 把window作为参数c传到匿名函数中进行执行. 
    那么走到c.RSAKeyPair = c.RSAKeyPair || g;这一段的时候, 实际上c就是window, 即执行的window.RSAKeyPair = window.RSAKeyPair || g;
    这一段执行完毕后, window.RSAKeyPair 指向了g这个类定义.
    所以你在外面new RSAKeyPair()的时候, 自然的指向了g()这种写法常见于各种扩展插件. 比如(function($){})(jQuery)这种写法. 很安全,比如: 在匿名函数内可以肆意使用$. 而不用管$是否被jquery让渡出去. 
      

  3.   

    感觉楼上两个大哥说的,我听的似懂非懂,js真TM乱,难读。我把整个js复制到一个新建的html里面,然后加了2个alert  只会弹出1这是为什么呢。。麻烦再指教下
    function abc(){
    alert("1");
    var c = new RSAKeyPair(b, "", d);
    alert("2");
    return ptoken;
    }
      

  4.   

    你要把 其他的JS也引到新建的html中 , 之弹出1 说明报错了  。  其实我觉得 没必要用这样的方式写 。你可以先学一些简单的js.