(1) this.initialize.apply(this, arguments);是什么意思

解决方案 »

  1.   


     var Class = {
    create: function(){
    return function(){this.initialize.apply(this, arguments);}
    }
     }// 初始化一个实例 并将参数传入initialize方法中
      

  2.   


      var Class = {
        create: function() {
          return function() { this.initialize.apply(this, arguments); }
        }
      }
      // 这是prototype.js里面的类构造方法,使用方法是:
      var myClass = Class.create();
      // 这样就可以创建一个类了。
      // 继续加入:
      myClass.prototype = {
        x : function () { return 1; },
        y : function () { return 2; },
        initialize : function () { alert(this.x() + this.y()); }
      }
      // 那么,你在实例化该类的时候:
      var mclass = new myClass();
      // 此时会弹出一个对话框,相当于:alert(1 + 2);
    <script type="text/javascript">
      var Class = {
        create: function()
        {
          return function()
          {
            this.initialize.apply(this, arguments);
          }
        }
      }
      // 这是prototype.js里面的类构造方法,使用方法是:
      var myClass = Class.create();
      // 这样就可以创建一个类了。
      // 继续加入:
      myClass.prototype =
      {
        a : 2,
        
        b : 3,
        
        x : function (m_x)
        {
          return (this.a * m_x);
        },
        
        y : function (m_y)
        {
          return (this.b + m_y);
        },
        
        initialize : function (m_value)
        {
          alert(m_value + ':' + this.x(2) + this.y(4));
        }
      }
      // 那么,你在实例化该类的时候:
      var mclass = new myClass('结果');
      
      // 此时会弹出一个对话框,相当于:alert(1 + 2);
    </script>
      

  3.   

    apply(,) 两个参数,第一个表示作用的对象 ,第二天表示传入的参数,lz的写法 多用与对象的创建过程中,就向楼上两位所说的 初始化一个实例 并将参数传入initialize方法中
      

  4.   

    “初始化一个实例 并将参数传入initialize方法中”???
     var Class = {
        create: function(){
            return function(){this.initialize.apply(this, arguments);}
        }
     }
    应该是:初始化一个静态方法“initialize”,然后通过“apply”让类Class.create事例同时继承initialize的方法属性(当然包括参数arguments),该继承是通过this指针的“冒充”或者说“劫持”实现的,Class.create“冒充”了this.initialize。
    简单而言:
    <script>
    function funx(a, b, c){
         this.a = a;
         this.b = b;
         this.c = c;
         this.show = function(){alert(this.b)}
    }function funy(){
         funx.apply(this, arguments);//也可以用“call”
    }var obj = new funy(0, 1, 2);
    obj.show()//"1"
    </script>
    “funy”就这样“冒充”或者说“劫持”了“funx”,继承了“funx”的所有方法和属性。