问题描述
var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ return this.name; }; } }; alert(object.getNameFunc()()); //The Window为什么上面这段代码运行之后alert 出来的是“The Window”?? 求详细解释
解决方案
this对象是在运行时基于函数的执行环境绑定的,匿名函数的执行环境具有全局性,因此匿名函数的this指向window
解决方案二:
var fn = object.getNameFunc();alert(fn());alert(function(){ return this.name; })
解决方案三:
var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){that = this; return function(){ return that.name; }; } }; alert(object.getNameFunc()()); //The Window
解决方案四:
匿名函数里面this==window
解决方案五:
object.getNameFunc()返回的是一个函数,不是object的属性,那么this自然就指向全局上下文了,不是window是嘛
时间: 2024-07-29 04:43:00