简单来说是因为函数中this指向调用这个方法的对象, 但是在saySex:function(){}中,并没有明确的对象调用getSex(),所有默认是window在调用; var obj = { ... saySex:function(){ console.log(this) //此处this指向obj,因为你能够调用saySex,必然是obj.saySex()通过obj调用; //getSex()在saySex函数内部定义的函数,作用域在函数内部,所以对于是谁在调用saySex,getSex无法知道,除非你告诉它; var that = this; function getSex(){ console.log("this.sex=" + this.sex); console.log(that.sex); //此处可以取到你想要的值; } getSex(); //此处并没有明确的对象调用getSex,所以默认全局调用; }, ... }
简单来说是因为函数中this指向调用这个方法的对象, 但是在saySex:function(){}中,并没有明确的对象调用getSex(),所有默认是window在调用;