var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}
var Drag = Class.create();
Drag.prototype = {
  //拖放对象,触发对象
  initialize: function(obj, drag, options) {
    var oThis = this;
    
    this._obj = $(obj);//拖放对象
    this.Drag = $(drag);//触发对象
    this._x = this._y = 0;//记录鼠标相对拖放对象的位置
    //事件对象(用于移除事件)
    this._fM = function(e){ oThis.Move(window.event || e); }
    this._fS = function(){ oThis.Stop(); }
    
    this.SetOptions(options);
    
    this.Limit = !!this.options.Limit;
    this.mxLeft = parseInt(this.options.mxLeft);
    this.mxRight = parseInt(this.options.mxRight);
    this.mxTop = parseInt(this.options.mxTop);
    this.mxBottom = parseInt(this.options.mxBottom);
    
    this.onMove = this.options.onMove;
    
    this._obj.style.position = "absolute";
    addEventHandler(this.Drag, "mousedown", function(e){ oThis.Start(window.event || e); });
  },还是不是 很明白 这两个之间 到底是一种怎样的关系 ,我的理解是,Class 是一个专门创建各种类 的 对象,剩下的就不是很理解了···

解决方案 »

  1.   

    单说this.initialize.apply(this, arguments);就是绑定.
    用this.initialize去代替this去执行一下方法,
    简单来说
    var a={name:"haha"};
    function b(){alert(this.name);}
    var test = function() { 
         return b.apply(a,arguments); 
       }; 
    test();
      

  2.   

    是,这个apply,和call方法我懂,就是把调用当前函数的对象换成传进来的第一个对象
    但是,这里为什么要return
    var Class = {
      create: function() {
        return function() {
          this.initialize.apply(this, arguments);
        }
      }
    }
      

  3.   

    如果var Class = { 
      create: function() { 
        return function() { 
          this.initialize.apply(this, arguments); 
        }  } 

    那么这里的this代表的是
    function() { 
          this.initialize.apply(this, arguments); 
        } 
    如果var Class = { 
      create: function() { 
        return 
          this.initialize.apply(this, arguments); 
         } 

    那么this代表create,而不是一个全新的对象了
      

  4.   

    create是一个方法,他的作用是[color=#FF0000]创建并返回[/color]一个新的方法,并且与这个新方法的initialize邦定。
      

  5.   

    那比如var aa = Class.create();
    那 aa此时是不是就是等于create 里面返回的那个函数对象?
      

  6.   

    没错,并且已经执行initialize方法
      

  7.   

    那照 你说的 aa的initialize 没有定义,也没有模型啊,怎么执行啊?
      

  8.   

    上面打错了“并且已经绑定initialize方法”
    以后应该是var Drag_1=new Drag("123", "345", options);
    var Drag_2=new Drag("123", "345", options);而不用 
    var Drag_1=new Drag();
    Drag_1.initialize("123", "345", options);
      

  9.   

    var Class = {
    create : function() {
    return function() {
    this.initial.apply(this, arguments);
    }
    }}
    var test = Class.create();
    test.prototype = {
    initial : function() {
    alert("ccccccccc"); }
    }
    var test1 = function(){
         var test2 = new test();
    }<input type="button" onclick="test1();"没有效果,帮我分析下。。
      

  10.   

    敢问是哪里没有效果,
    alert也能出来.对象也能建立.应该没什么问题
      

  11.   

    是啊,是出来了,这下这里面步骤懂了,顺便问下
      this.Limit = !!this.options.Limit;
    这后面两个!!是什么用意啊?
    还有
    this._fM = function(e){ oThis.Move(window.event || e); }
    我发现一般是 || + 一个对象 是什么意思?
      

  12.   

    !!"123"
    !!1
    !!0
    !!""
    任何型的双非都会转化成boolean型
    ---------------------
    oThis.Move(window.event || e); 这是兼容
    也就是说,如果有window.event就将window.event当参数传进去
    如果有e就将e当参数传进去
    这和
    function get(e){
    var ee=window.event || e;
    }
    是一个道理