(function(D, B, F) {
    if (D.sdoLogger) return;
    var E = {
        jsName: "sdo_beacon.js",
        defaultVer: 20111010,
        getVersion: function() {
            var _ = this.jsName,
                $ = new RegExp(_ + "(\\?(.*))?$"),
                D = B.getElementsByTagName("script");
            for (var E = 0; E < D.length; E++) {
                var C = D[E];
                if (C.src && C.src.match($)) {
                    var A = C.src.match($)[2];
                    if (A && (/^[a-zA-Z0-9]+$/).test(A)) return A
                }
            }
            return this.defaultVer
        },
        base64encode: function(_) {
            var D = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
                F, E, C, $, A, B;
            return F
        }
    }
    $.tracking();
    D.sdoLogger = $
})(window, document)
这叫匿名类?那是怎么调用的呢?如果我想多了解一下这方面的知识,有什么书推荐?网络应该怎么搜?还有一个问题随便也问了吧,关于jquery的问题。$.ajax({
type : "GET",
cache : false,
url : url,
dataType : 'text',
success : function(data) { //问题的关键点,这个data数据居然可以直接传过来,是怎么实现的?
    if(data == 1){

    }
}
});

解决方案 »

  1.   

    这个是一个自运行匿名函数,主要是模仿块级作用域的。里面的代码会自动运行。下面的括号是传参进去的。
    jQuery的那个data是在jQuery构造里面传进来的,这个需要看jQuery的API才知道他传了什么过来。
      

  2.   

    网上查了一些资料,其中有个地方举个这个例子:(function(arg){
          alert(arg+100);
    })(20);
    不明白的就是为什么200可以传到arg这个参数里??
      

  3.   

    额。。看了几篇文章明白了。代码如果这样写就容易明白多了(function(arg){
          alert(arg+100);
    }(20));
    文章链接,中文翻译:http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html
    英文原创(可能):http://benalman.com/news/2010/11/immediately-invoked-function-expression/
      

  4.   

    第一个括号里面放函数表达式,第二个括号执行;相当于
    var abc=function(n){...};
    abc(5);
    只不过他省略了赋值这个操作,而直接把函数后面加个括号运行又有语法错误,所以用个括号把函数括起来,就成了你看见那样子。