0
給出一個元素:從創建一個自定義標籤的值的功能屬性
<div id='adiv' customAttr='myFuncToExecute'></div>
什麼是讀取自定義屬性的最佳方式,並將其轉換成在JavaScript中可執行的方法。我目前使用的new Function()
構造:
if ($('#adiv').attr('customAttr')) {
var myFuncV1 = new Function('return ' + $('#adiv').attr('customAttr') + '()');
var myFuncV2 = new Function($('#adiv').attr('customAttr'));
}
myFuncV1
將可執行文件myFuncV1()
。或者,我可以在事件處理程序綁定使用myFuncV2
:
$('#adifferentdiv').click(myFuncV2);
這樣確實對我的需要,但使用new Function()
構造相當於使用eval()
。
問題:是否有更好的方法來讀取和評估(無雙關語意圖)自定義屬性,其中包含要在腳本的其他地方使用的方法的名稱?
在此先感謝您的幫助。
謝謝。我很確定這正是我正在尋找的。一個快速的問題:有沒有辦法做到這一點,方法將接受參數?我假設同樣的事情:'var obj = {someMethod:function(param1,param2){...}};'? – Bic
其中,* param1 *是一個表示非全局變量名稱的字符串,no。您可以使用帶方括號表示法的字符串來訪問對象的命名屬性,就是這樣。全局變量是一種特殊情況,因爲它們是全局(瀏覽器中的窗口)對象的屬性。沒有其他變量的等價物(因爲函數執行上下文的「變量對象」或[*環境記錄*](http://ecma-international.org/ecma-262/5.1/#sec-10.2.1)不能直接訪問)。 – RobG