2011-08-15 95 views
3

我在一些代碼看到這個:使用括號訪問方法的Javascript?

var _0xdf50x7 = document['createElement']('form');

這是如何工作的?這是否意味着可以像數組元素一樣訪問對象的方法?

+1

這種形式通常用於方法名稱在變量中時:'var m = some_condition? 'm1':'m2'; o [m]();' –

回答

5

由於createElement()方法是document對象的member,它可以使用來訪問任一dot notation

var form = document.createElement("form"); 

或者bracket notation

var form = document["createElement"]("form"); 

這可以是有用的,如果的名稱調用方法存儲在一個變量中:

var methodName = "createElement"; 
var form = document[methodName]("form"); 

如果調用的實際方法取決於外部條件,也可以使用它。這裏是一個(人爲的)例子:

function createNode(str, isTextNode) 
{ 
    return document[isTextNode ? "createTextNode" : "createElement"](str); 
} 
+0

爲什麼要用括號? – mowwwalker

+1

@user,如果您必須計算要調用的方法並且希望備用「if」語句(或者如果方法名稱存儲在變量中,正如其他人正確指出的那樣),則它們有時很有用。 –

+1

如果要在括號中使用字符串文字(如給出的示例中),括號語法沒有多大幫助,但是如果函數名稱位於變量中,或者您想要應用某些條件來選擇哪個函數,例如'document [someFunction]();'或'document [someCondition? 「someFunction」:「someOtherFunction」]();' – nnnnnn