这个就涉及到函数的作用域问题。首先,函数的作用于是申明函数的作用域。再来看function () { return this.name; },这个函数是作为返回值回去的,导致申明它的作用域是window,所以在这个函数内部,这个this代表window,那么这个函数的实际的执行结果会是return window.name。所以是你看到的结果。
getNameFunc: function () { return function () { return function () { return this.name; }; }; }
结果一样吗?
你的意思函数中嵌套return function(){} 就直接给window了吗?
再问下
@凡图: 是的,不过调用方式就得变化了,alert(object.getNameFunc()()());
@幻天芒: 感谢!!!
@幻天芒: 能在问下,这个renturn function有啥具体应用吗?就是在什么场合用?为了避免或优化什么用呢?
@凡图: 话说,还真的很少用到这样的场景。不过如果要动态设置函数的作用域的话,就可以采用这样的方式了~
@幻天芒: 好吧,谢了!哥们JS搞得不错啊。
@凡图: 额,见笑了。我还没入门...
@幻天芒: 先会输出,再会用,最后就是写脚本,改别人框架。。。JS前景不错。以后我的问题多多回答下哈
@凡图: 多多交流!
闭包