<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>
//
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>
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里加属性和事件可以直接用赋值号
<script type="text/javascript">
var drag1 = new DragObject(document.getElementById('div1'));
var drag2 = new DragObject(document.getElementById('div2'));
drag1.dragStart(); //在这里没问题,确实很奇怪啊 呵呵,我也不懂。一起等答案咯~
</script>
在onmousedown这个事件中,this当然指向DIV
this.dragStart(e);
};
修改成这个即可。
<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>