如果我有一些對象中定義的函數在調用內部目標函數:使用括號記號
var myobject={
myfunction:function(){//mycode here}
}
通常可以使用訪問功能:
myobject.myfunction()
,但如果我想使用
myobject["myfunction"]
試圖這樣,實際上函數沒有被調用,我怎麼能調用函數使用括號s符號?
如果我有一些對象中定義的函數在調用內部目標函數:使用括號記號
var myobject={
myfunction:function(){//mycode here}
}
通常可以使用訪問功能:
myobject.myfunction()
,但如果我想使用
myobject["myfunction"]
試圖這樣,實際上函數沒有被調用,我怎麼能調用函數使用括號s符號?
使用它就像。你是非常接近
myobject["myfunction"]();
你也可以做到這一點
var myfuncname="myfunction";
myobject[myfuncname]();
非常感謝,這正是「他們」所需要的:P – ProllyGeek
+1,我唯一的評論是你在一個例子中使用雙引號,在另一個例子中使用雙引號。也許對初學者來說,這可能被認爲是必要的差異。 – Peter
@ProllyGeek,誰是「他們」? – Satpal
兩種形式
myobject.myfunction;
和
myobject["myfunction"];
是等價的,只要你只能使用固定字符串來訪問成員(使用一個計算值是一個不同的問題,那麼你必須使用第二種形式)。這兩條線導致函數對象成員myfunction
,你可以分配給一個變量,如果你喜歡,並調用:
var myfunc = myobject.myfunction;
myfunc();
注意,將其分配給變量打破了this
變量,所以你可能不希望要做到這一點,如果你正在做OOP。
正如你提到的,調用函數意味着增加()
與參數列表之後,也沒關係,該功能是通過一個表達式獲得的,所以無論是:
myobject.myfunction();
或
myobject["myfunction"]();
只是一個旁註 - 使用括號表示,你也可以有其他功能名稱,否則無效。因此'myobject [「我的函數」]()'會工作,但'myobject.my函數()'使用點符號不會。 – RBT