<html>
  <head>
<meta charset="GBK" />
  <script type="text/javascript">
 function rank(){
var x =20;
var y=2;
}
                rank.prototype.paint = {
               
                    px: function(){alert('x: '+this.x);},//访问rank的x
                    py: function(){alert('y: '+this.y);}//访问rank的y
                 };
           
                 var  r = new rank();
                 r.paint.px(); //可以访问,但 this.x= undefined
        //this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象/它表明了当前运行该函数的对象。
              
</script>
</head>
<body >
</body>
</html>
问题:r.paint.px()如何才能访问到rank的x,(当然定义为rank.x = 20,用rank.x是可以访问的,还有没有别的方法呢)

解决方案 »

  1.   

    代码有点不伦不类
    上面是构造器函数访问
    下面又变成了方法访问
    你px里的this=>paint而不是=>rank
      

  2.   

    <html>
      <head>
        <meta charset="GBK" />
        </head>
        <body >
        <script type="text/javascript">
            function rank(){
                this.x = 20;
                this.y = 2;
            }        
            rank.prototype = {
             paint : function(){ 
             var self = this;
             return{
            px: function(){alert('x: '+self.x);},//访问rank的x
            py: function(){alert('y: '+self.y);}//访问rank的y
              }
             }
    }
       
             var  r = new rank()
               ,o = r.paint();
             
            o.px(); //可以访问,但 this.x= undefined
            //this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象/它表明了当前运行该函数的对象。
                                        
            </script>
        </body>
    </html>
      

  3.   

    var self = this;//这个this也只是指向paint()函数对象,并没有指向rank对象,所以结果还是undefined呀!