js將字符串作為函數調用


使用場景:

開發中,選擇不同的業務場景(將近10個),彈出一個公共的對話框,點擊對話框的確認按鈕,根據不同類型調用不同方法。if else不考慮,類型太多,代碼冗余。

解決思路:
選擇業務彈出對話框的時候,定義一個全局變量,存儲不同業務type,業務type的值就是要調用方法的函數名。

方法1:eval(str)
eval(str) 函數可計算某個字符串,並執行其中的的 JavaScript 代碼。注意,eval方法的參數只能是字符串,如果傳遞的不是字符串的話,會直接返回傳值,而非調用。由於eval方法效率低,而且不安全,不建議使用。

function test(str){
alert(str);
}
var a='test';
var b='345';
eval(a+'('+123+')');
eval(a+'(b)');


方法二:把方法名當成屬性名
函數在js里面可以被保存在對象中,因此通過對象的屬性訪問,調用字符串方法。

全局函數聲明會變成全局對象的屬性。全局對象在進入執行上下文前創建的一個唯一的對象。在瀏覽器運行環境里,全局對象就是window對象
屬性訪問可以使用 點標記法 或者括號標記法。其中使用點訪問需要標識符,二括號訪問使用的是標識符對應的字符串
function test(str){
alert(str);
}

var param='哈哈';
window['test'](param);//直接執行
window['test'].call(this,'param');
如果函數是其他對象屬性,也可以同樣方法調用。


原文鏈接:https://blog.csdn.net/xingmei_ok/java/article/details/82901068


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM