當我運行下面的代碼:
var divs = $('div');
// The first three methods of showing a div work
divs.eq(0).show();
(divs.eq(1).show)();
var f = function() {
divs.eq(2).show();
}
f();
// But this doesn't. Why?
var g = divs.eq(3).show;
g();
最後一種方法不顯示DIV,而且也沒有錯誤在控制檯中。我想使用它,因爲我想簡潔地存儲函數而不創建匿名函數塊。這正是我通常在Python中所做的。我無法理解這裏出了什麼問題。
編輯:評論是不是真的幫助我瞭解問題。 this
怎麼會迷路?它改變了什麼,爲什麼?爲什麼不會發生(divs.eq(1).show)();
?
這是一個有趣的問題! –
'.show()'取決於'this'的值,當你單獨訪問方法並將其調用爲單獨的步驟時,該值會發生變化。 [在JavaScript原型函數中保留對「this」的引用](http://stackoverflow.com/questions/2025789/preserving-a-reference-to-this-in-javascript-prototype-functions)以及[這個「關鍵字工作?」(http:// stackoverflow。com/questions/3127429/how-do-this-keyword-work) –
結果是一個沒有上下文的函數 – charlietfl