我有模块...为什么引用'this'会返回值,应该是undefined?
var myModule = (function(){
var obj = new Object();
obj.name = "";
obj.sayName = function(){
obj.name = "jon";
console.log(obj.name);
console.log(this.name);
}
return obj;
})()
myModule.sayName();
将打印出单词'乔恩的两倍,占的console.log语句。
但是我不明白为什么'this'是正确的,因为它会返回对函数的引用,并且'undefined'不是吗?
'this'' obj'因为'obj'是'myModule'并且你调用像'myModule.sayName()'这样的函数,注意这个点。 – elclanrs 2014-08-31 10:14:25
但我认为是因为它是一个新的函数,它会得到自己的闭包? – Exitos 2014-08-31 10:22:02
这与闭包或范围无关,而是与''this'如何在JavaScript中起作用。基本上,如果被称为'a.b.c()',''中的'this'指的是最后一个点之前的最后一个名字 - 'b'。所以在你的情况下,最后一个点之前的名字是'myModule'。看到这个答案的更多信息:http://stackoverflow.com/questions/13441307/how-does-the-this-keyword-in-javascript-act-within-an-object-literal/13441628#13441628 – slebetman 2014-09-05 08:20:56