本帖最后由 hetengfei_ 于 2011-12-08 11:00:05 编辑

解决方案 »

  1.   

    先var a=new _Point();
      

  2.   

    这样不行啊,先var a=new _Point();   
    然后 alert(a.x );   ?
    因为 我声明 时 this.x
    那么 this.x 就是Js 的私有对象。
    所以,这个也是不行啊。
      

  3.   

    var _Point = function(x, y) {
    //缓存this
    var _this = this;

        this.x;
        this.y;

        this.F_Point = function() {
            var MoveEvent=new AboutEvent();
            MoveEvent.addEventHandler(document.body, "mouseup", this.DocumentMouseUp);

        };
        
        // DocumentMouseUp只是个辅助函数,没必要暴露给外面
        function DocumentMouseUp(ev){
            ev = ev || window.event;         // 事件
            ////////下面的代码有问题:
            _this.x=ev.clientX;
            _this.y=ev.clientY;
            alert(_this.Name);
    _this.x ; //我想调用它 (这就是我问的问题)
    _this.y ; //我想调用它 (这就是我问的问题)
        };
    }
      

  4.   


    <script type="text/javascript" language="javascript">
           var obj = function(x, y){
               this.x = x;
               this.y = y;
               alert(this.x);
           };
           var o = new obj(1, 2);
           alert(o.x);
           alert(o.y);
    </script>看一下这个例子能不能帮助你.
      

  5.   

    ==============引用 5 楼 axiheyhey 的回复========
            var _Point = function(x, y) {
                //缓存this
                var _this = this;
                this.x;
                this.y;
            ........
    ==============引用 5 楼 axiheyhey  END  ========
    #5 楼 axiheyhey 
    的方法可以达到我的目的:
    特此感谢!!   为了给关注我的贴子的 贴友一个 答案,请看 下面的代码。
    <html >
    <head runat="server">
        <title></title>
     <style type="text/css">
     #divTest
     {
      color:White;
      background-color:Gray;
      width:200px;
      height:100px;
      left:400px;
      top:200px;
      position:absolute;
      border:solid 1px #7732f0 ;
     }
    #divShow
    {
    background-color:Yellow;
    width:200px;
    height:100px;
    left:10px;
    top:10px;
    position:absolute;
      border:solid 1px #7732f0 ;

    }
         
         </style>
        <script type="text/javascript" src="JS/jquery-1.4.2.js"></script>
    <script type="text/javascript" src="JS/jquery-1.4.2-vsdoc.js"></script>
        <script type="text/javascript">
        ////////////////这里是动态事件代码/////////////////////////////////////////////////// 
    var AboutEvent = function(){
    //缓存this
    var  _this=this;
    //增加 事件 处理function
    this.addEventHandler=
    function (oTarget, sEventType, fnHandler) {
    if (oTarget.addEventListener) {
    oTarget.addEventListener(sEventType, fnHandler, false);
    } else if (oTarget.attachEvent) {
    oTarget.attachEvent("on" + sEventType, fnHandler);
    } else {
    oTarget["on" + sEventType] = fnHandler;
    }
    };
    //移除 事件 处理function
    this.removeEventHandler = function (oTarget, sEventType, fnHandler) {
    if (oTarget.removeEventListener) {
    oTarget.removeEventListener(sEventType, fnHandler, false);
    } else if (oTarget.detachEvent) {
    oTarget.detachEvent("on" + sEventType, fnHandler);
    } else { 
    oTarget["on" + sEventType] = null;
    }
    };
    //用法
    //addEventHandler(document, "mousemove", f1);
    //addEventHandler(document, "mouseup", f2);
    };
    var _Point = function(px, py) {
                //缓存this
                var _this = this;
                this.x=px;
                this.y=py;
    this.GetPoint = function(){
    return ("<hr/>"+"x="+this.x.toString()+"<br/>y="+this.y.toString()+"<hr/>");
    };
                this.F_Point = function() {
                    var Event=new AboutEvent();
                    Event.addEventHandler(document.body, "mouseup", this.DocumentMouseUp);
                    
                };
               this.DocumentMouseUp= function (ev){
                    ev = ev || window.event;         // 事件
                    _this.x=ev.clientX;
                    _this.y=ev.clientY;
    $("#divTest").html("<hr/>"+"x="+ev.clientX.toString()+"<br/>y="+ev.clientY.toString()+"<hr/>");
                };
            };
            
         $(function(){
         var pp = new _Point(1,1);
          pp.F_Point();
         $("#divTest").mouseenter(function(){
         $("#divShow").html(pp.GetPoint());
         });
         });
    </script>
    </head>
    <body>
        <div>
        <div id="divTest"></div>
    <div id="divShow"></div>
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />

        </div>
    </body>
    </html>以上代码 就是证实了 
         #5 楼 axiheyhey 
    的方法 是行的。
      

  6.   

    楼主态度很好哈,赞一个!
    也可以这么做:var _Point = function(px, py) {
                this.x=px;
                this.y=py;
                this.GetPoint = function(){
                    return ("<hr/>"+"x="+this.x.toString()+"<br/>y="+this.y.toString()+"<hr/>");
                };
                this.F_Point = function() {
                    var Event=new AboutEvent();
                    Event.addEventHandler(document.body, "mouseup", this.DocumentMouseUp);
                    
                };
               this.DocumentMouseUp= (function (that){
                    return function(ev){
                       ev = ev || window.event;         // 事件
                       that.x=ev.clientX;
                       that.y=ev.clientY;
                       $("#divTest").html("<hr/>"+"x="+ev.clientX.toString()+"<br/>y="+ev.clientY.toString()+"<hr/>");
                    };
                })(this);//将当前的this传到事件函数中去
            };
      

  7.   

    ============引用 9 楼 sharkdbj 的回复===========
    楼主态度很好哈,赞一个!
    也可以这么做:
    JScript code
    var _Point = function(px, py) {
                this.x=px;
                this.y=py;
                this.GetPoint = function(){
                    return ("<hr/>"+"x="+this.x……
    ============引用 9 楼 sharkdbj END   ===========

       现在 通过了 
               #9 楼 sharkdbj
    的例子,引导我对 js闭包 认识,了解 闭包的一个 作用 。