var na = 9999;
function miao(){
this.a = {
m : {
na : "321",
c : this.na
},
na : 7898
}
this.na = 8888;
this.haha = {
m : this.na,
na : 77777
}
}
var jian = new miao();
alert(jian.a.m.c) // undefined
alert(jian.haha.m) //8888
var b = {
na: 222,
ma: 333,
cc: this.na,
m : {
oo : this.na
}
}
alert(b.cc) //9999
alert(b.m.oo) //9999
上面得undefined怎么理解?
也就是
m : {
na : "321",
c : this.na
},
里面的this指到哪去了

解决方案 »

  1.   

    this.na 指向b{} 中的 this.na
    但是你B中没有this.na
      

  2.   

    m : { 
    na : "321", 
    c : this.na 
    }, 
    this==m
      

  3.   


    var na = 9999;
    function miao(){
        this.a = {
            m : {
                na : "321",
                c : window.na
            },
            na : 7898
        }
        this.na = 8888;
        this.haha = {
            m : this.na,
            na : 77777
        }
    }
    var jian = new miao();
    alert(jian.a.m.c) // 
    alert(jian.haha.m) //8888
    var b = {
        na: 222,
        ma: 333,
        cc: this.na,
        m : {
            oo : this.na
        }
    }
    alert(b.cc) //9999
    alert(b.m.oo) //9999应该明白为什么了吧呵呵
      

  4.   

    不明白,你的意思是指window?如果是window的话那就应该是9999,但不是呀
      

  5.   

    var jian = new miao(); // this 指向了jian
    alert(jian.a.m.c) // undefined 因为this.na = 8888;此句还没有执行 所以是undefined