我有模塊...爲什麼引用'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