大体上如下:
大体上如下:
var editor = function(){ 
var ajaxRequestUrl = "";    function Fields(id, title) {
this.fields = [];
}

Fields.prototype = {
save : function() { },
redirect : function(result) {},
}
return {
init : function() { this.allowFields = new allowEditFields();}
}
}();//调用$(document).ready(function(){
editor.init();
});两个问题:红色部分怎么理解?

解决方案 »

  1.   

    第二个例子:///////////////////////////////////
    //指定 jquery.ui.dialog打开时的位置
    ///////////////////////////////////
    (function($) {
        var originOpen = $.ui.dialog.prototype.open
        $.ui.dialog.prototype.open = function() {
            //var     event= window.event || arguments.callee.caller.arguments[0];
            //var event = event || window.event;
            var event = getEvent();
            //alert(event) // ie 和 ff下,都显示 "[object]" 
            var PosX = 0;
            var PosY = 0;
            if (event.pageX || event.pageY) {
                PosX = event.pageX;
                PosY = event.pageY;
            }
            else {
                PosX = event.clientX + document.body.scrollLeft - document.body.clientLeft;
                PosY = event.clientY + document.body.scrollTop - document.body.clientTop;
            };
            this.options.position = [PosX, PosY];
            //alert(this.options.position);
            originOpen.apply(this, arguments);
        };    function getEvent() { //同时兼容ie和ff的写法 
            if (document.all) return window.event;
            func = getEvent.caller;
            while (func != null) {
                var arg0 = func.arguments[0];
                if (arg0) {
                    if ((arg0.constructor == Event || arg0.constructor == MouseEvent)
                        || (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) {
                        return arg0;
                    }
                }
                func = func.caller;
            }
            return null;
        }
    })(jQuery);
    主要问题是类的声明问题:这种声明如何理解?
      

  2.   

    哥 这真是你的ID吗?自执行函数
    (function(){})()
    就是定义一个自执行的匿名函数。
      

  3.   


    可能是专职php程序员,不会javascript。。
      

  4.   

    匿名函数
    也就是先声明这个函数,完了之后马上运行一把.类似于:
    var ff = function(){..}
    ff();
      

  5.   

    没见过多少世面,让各位见笑了。jquery的例子可按你说的理解为自执行函数。
    但var editor = function(){ }();这个怎么理解?
    var editor = function(){ }定义匿名函数不行吗?为什么还要多加个括号。
      

  6.   

    再看调用:$(document).ready(function(){
        editor.init();
    });他调用了匿名函数的return里的方法。有点理解了,匿名函数返回一个对象,它实质调用返回对象里的方法。但有一问题:如果外部调用,是否是return里的方法和return外的方法都能调用。还有一个问题:匿名函数里的方法能否被其他全局对象调用(不是editor),想了解一下方法的作用域。
      

  7.   

    但有一问题:如果外部调用,是否是return里的方法和return外的方法都能调用。var editor ={ 
          init : function() {    this.allowFields = new allowEditFields();}  //但是这个allowFields就存在了
    }
    还有一个问题:匿名函数里的方法能否被其他全局对象调用(不是editor),想了解一下方法的作用域。
    不能~~这个方法只能供你的editor来使用了,隐藏变量就是这个目的~
      

  8.   

    比如:第一例中editor.init();允许的
    但如果在其他地方:editor.Fields();允不允许?
      

  9.   

    var g = function(){
    function Test() {
    this.age = 24;
    }
    return {
    init:function(){
    this.name = "jeechang";
    },
    test:Test
    };
    }();
    g.init();
    alert(g.name);//jeechang
    g.test();
    alert(g.age);//24
    alert(g.Test());//error
    希望你能明白~
      

  10.   

    editor.init();允许的但如果在其他地方:editor.Fields();允不允许?
    这个是不允许的!
    Fields 是 editor 的私有局部变量,只能在 editor 内部使用function a()
    {
    var aa=1; // 私有变量
    this.bb =2; // 公共变量,外面可以通过a 的实例来访问 
    }
      

  11.   

    自执行函数
       (function(){
           alert("dd")
        })();  void function(){
        alert("dd")
      }();  ~function(){
       alert("dd")
    }();
     
     !function(){
        alert("dd")
    }();第二个例子也是一样的
      也是一个自执行函数 。只不过带了一个参数
      自执行函数后的()的里面与函数的参数一致!!
      代码: (function(b){
          var c=b;
      })(b) //这个b不能少,,少了的话,,就不会被传进去!!!$与jquery是一个意思 它们指向的都 是同一个对象
      jquery=window.jquery=window.$=function(){
       .....
    } //jquery里面的