主要是2种方式:第一种:(function(){
window.r_soft= new Object();
function tests(){
alert("SS");
}
window.r_soft.tests = tests;
})();html可以通过调用r_soft.tests()调用
我的理解: 通过自执行方式 把r_soft作为全局对象使用第二种:var r_soft= new Object();
r_soft.tests = function(){
alert("SS");
}同样也可以通过r_soft.tests()调用
我的理解也是r_soft作为全局对象使用  问题:
1:为啥第一种方式要使用自执行的方式。(我试过不使用也是可以正常调用)
2:平时项目大家会选择使用哪种方式? 为啥?

解决方案 »

  1.   

    第一个是闭包,主要看tests()函数的功能了。
    一般的js代码少的网页用哪个都行。
      

  2.   

    1的写法主要是为了变量和函数(本质上也是变量)作用范围独立,这样你写好一个你自己的一功能,就可以这样封装为外部的js文件,在任何地方引用,而不用担心你自己的函数和“全局”变量会与引用页冲突。
    比如
        var a = "out";
        function tests() {
            alert(a);
        };
        
        (function() {
            window.r_soft = new Object();
            var a = "inner";
            function tests(s) {
                alert(s+a);
            }
            window.r_soft.tests = tests;
        })();
      

  3.   

    个人认为,匿名函数立即运行,势必会影响性能,使用它只要是避免与全局变量冲突。楼主可以试试
            var namespace = {
    a:1,
    b:2,
    fn: function(){
    alert(this.a);
    }
    }
      

  4.   

    第一种方式是为了避免使用过多的全局变量,给个例子吧 (function(){
        window.r_soft= new Object();
        var str = "SS";
        function tests(){
            alert(str);
        }
        window.r_soft.tests = tests;
    })();

    r_soft.tests(); // SS
    alert(str) // undefined var r_soft= new Object();
    var str = "SS";
    r_soft.tests = function(){
        alert(str);
    }

    r_soft.tests(); // SS
    alert(str) // SS