2014-03-03 70 views
1

我看到導航欄上的代碼,我第一次看到這種類型的由字符串調用的jQuery方法?

var logoSH = fixIT ? 'show' : 'hide'; 
$('#mini-logo') 

忽略

FIXIT

它包含truefalse

沒有$('#mini-logo')後第一次I .我看到hide()show()方法被hide調用。

它是如何工作的?

+0

Duplicate:http://stackoverflow.com/questions/6565681/javascript-square-bracket-function-call –

回答

2

在Javascript中這些是相同的:

myObj.SomeProperty 

myObj["SomeProperty"] 

所以這樣的:

$("someSelector").hide(); 

等同於:

$("someSelector")["hide"](); 

您發佈的代碼等價於:

if (fixIT) { 
    $('#mini-logo').show(300); 
} 
else { 
    $('#mini-logo').hide(300); 
} 

但它更緊湊一些,(恕我直言)少得多的可讀性。儘管公平地說,它確實確保了傳遞給.show.hide(例如300)的論據總是相同的,這對您可能很重要。另外,如果你有超過一個參數可以通過(在兩種情況下它們都是相同的),它可能會更有用一些。

2

JavaScript有兩個member operatorsdot notationsquare bracket notation。這兩個都用於訪問對象的成員。

當你有一個固定的屬性鍵來訪問,其中作爲方括號表示法中所用的點表示法用於當你有一個密鑰,其是一個關鍵

當你說$('#mini-logo')[logoSH](300),假設logoSH == 'show'它相當於到$('#mini-logo').show(300)