var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ return this.name; }; } }; alert(object.getNameFunc()());
调试欢乐多
getNameFunc : function(){
//getNameFunc是object的一个方法,这里的this指向object对象
return function(){
//js有变量声明和函数声明提升,这里的匿名函数提升到object后面,只是在getNameFunc中调用,所以this指向window,而var name = "The Window";实则是window.name = "The Window";
return this.name; }; }
执行object.getNameFunc()()时,a函数的调用方式是直接调用而不是作为object的属性调用的,所以它的this指向的是全局对象window(严格模式是undefined)。想要指向object改成箭头函数return ()=>this.name;就可以了