<script type="text/javascript">
        // 
        DragObject = function (object)
        {            
            // 
            this._object = object;
            this._isStartDraging = false;
            object.dragObject = this;   //给object控件加个对 对象的引用
            // Set Event
            this._object.onmousedown = this.dragStart;
        };        // dragStart
        DragObject.prototype.dragStart = function()
        {
            alert(this.dragObject._isStartDraging); // 这里的this指div,即之前传入的object
        };
        
    </script>

解决方案 »

  1.   

    var drag1 = new DragObject(document.getElementById('div1'));
            var drag2 = new DragObject(document.getElementById('div2'));
    这两行调用了函数DragObject,分别把div1和div2作为参数
    所以,所有在函数中的this表示的就是带进去的这个参数
            DragObject = function (object)
            {            
                // 
                this._object = object;
                this._isStartDraging = false;  //这里给this(也就是div控件)加了2个属性            
                // Set Event
                this._object.onmousedown = this.dragStart; //这里给它加了事件
            };在javascript里加属性和事件可以直接用赋值号
      

  2.   

    刚刚看到你的问题
        <script type="text/javascript">
            var drag1 = new DragObject(document.getElementById('div1'));
            var drag2 = new DragObject(document.getElementById('div2'));
            drag1.dragStart(); //在这里没问题,确实很奇怪啊 呵呵,我也不懂。一起等答案咯~
        </script>
      

  3.   

    shenba() 能不能解释一下原理!
      

  4.   

    dragStart传递的是_object.onmousedown 
    在onmousedown这个事件中,this当然指向DIV
      

  5.   

    this._object.onmousedown = function (e) {
    this.dragStart(e);
    };
    修改成这个即可。
      

  6.   

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
        <script type="text/javascript">
            // 
            DragObject = function (object)
            {            
                // 
                this._object = object;
                this._isStartDraging = false;
                
                // Set Event
                this._object.onmousedown = delegate(this,this.dragStart);
            };
            
    function delegate(obj,fun){
    var de = function()
    {
      fun.call(obj);
    }
    return de;
    }
            // dragStart
            DragObject.prototype.dragStart = function()
            {
                alert(this._isStartDraging); // 为什么这里this._isStartDraging是'undefined';
            };
            
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div id="div1" style="background-color: Green; width: 100px; height: 100px;">
                11111111111
            </div>
            <div id="div2" style="background-color: red; width: 50px; height: 50px;">
                22222222222
            </div>
        </form>
        <script type="text/javascript">
            var drag1 = new DragObject(document.getElementById('div1'));
          drag1.dragStart();
            var drag2 = new DragObject(document.getElementById('div2'));
        </script>
    </body>
    </html>