function outside(){
var z = "var z";
var k = "k";
var w = 'w';
var name = "SevenLee";
var age;

{
//alert("constructor:"+name);//normal
}//花括号优先于(function(){ //statement })()


(function(){ 
t();//this method is normal
//this.setName("constructor Name");//exception:对象不支持此属性或方法
//setName("constructor Name");//exception:缺少对象
})();

this.setName = function(name){
this.name = name;
}

this.getName = function(){
return name;
}

function t(){
//显示:this.z:undefined   z:var z
alert("this.z:"+this.z+"\tz:"+z);
//this.getName();//exception:对象不支持此属性或方法
}

this.outFun = function(){
//alert(name);
//t();
//this.setName("Lee");
}
}var out = new outside();
在这里,我不知道this何时有用,何时用没用郁闷,各位大虾们,给小弟讲讲“this”的用法。谢谢谢谢!!!

解决方案 »

  1.   

    http://www.cnblogs.com/birdshome/archive/2005/03/07/95931.html
      

  2.   

    <script type="text/javascript"> var a_=new a();
    function a(){
    this.a_attr_this="a_attr_this";
    var a_attr_var="a_attr_val";

    this.a_fuc_this=function(){
    alert(a_attr_var);//可调用父级定义的属性
    };
    }
    alert("带 this 的  "+a_.a_attr_this);//在a()外面调用 this. 这种形式的属性 方法
    alert("带 var 的  "+a_.a_attr_var);//而这种 var a_attr_var 的外函数外面无法调用a_.a_fuc_this();//在a()外面调用 this. 这种形式的属性 方法
    </script>
      

  3.   

    补充-------------------------------------<script type="text/javascript"> 
    var a_=new a();
    function a(){
    this.a_attr_this="a_attr_this";
    var a_attr_var="a_attr_val";

    this.a_fuc_this=function(){
    a_fuc_var();//可调用父级内的方法
    };

    function a_fuc_var(){
    alert(a_attr_var);
    }
    }
    alert("带 this 的  "+a_.a_attr_this);//在a()外面可以调用 this. 这种形式的属性 方法
    alert("带 var 的  "+a_.a_attr_var);//而这种 var a_attr_var 的在函数外面无法调用a_.a_fuc_this();//在a()外面调用 this. 这种形式的属性 方法
    a_.a_fuc_var();//执行到这里会报错,找不到方法 a_fuc_var()
    </script>
      

  4.   

    使用this一定要注意其指代的问题 楼主的这种情况是典型的没有分清this指代谁 
    修改如下:
    function outside()
    {
    var z = "var z";
    var k = "k";
    var w = 'w';
    var name = "SevenLee";
    var age;
    var me = this;//  提出this指代。 如果new outsidenew() 其永远指向这个对象; 如果outside() 其指代window
    this.setName = function(name)
    {
    this.name = name;
    } this.getName = function()
    {
    return name;
    }; (function()
    {
    t();
    me.setName("constructor Name");
    })(); function t()
    {
    me.getName();
    } this.outFun = function()
    {
    alert(me.getName());
    t();
    me.setName("Lee");
    }
    }var out = new outside();
      

  5.   

    this在不同情况下有不同的值,比如说你代码中的t函数,因为直接调用了t(),所以t里面的this指向全局变量,所以this.z指的是全局范围内的z变量,由于没有这个变量,所以打印undefined。
      

  6.   

     this.getName = function()
        {
            return this.name;
        };5楼代码还需要改下
      

  7.   

    this,差不多可以理解为当前的域,
    这个,最好自己写写代码体会下