<script> /* var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ console.log(this); return this.name; /*此处this指的是返回的这个函数本身,调name会调用全局变量,故为The window*/ }; } }; alert(object.getNameFunc()());*/ //The Window var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ var that = this; console.log(that); return function(){ return that.name; /*在子函数中调用父函数的变量,子函数相当于给了一个全局变量,驻留在内存中, 而子函数的存在依赖于父函数,所以父函数也一直在内存中,不会在调用结束后被GC回收,这就是闭包原理*/ }; } }; alert(object.getNameFunc()()); /*My Object*/ </script>