JS依据动态天生的字符串,考证是不是存在对应function并实行

这个需求是在我搭建前端项目框架的时刻碰到的:

因为我走的是前后端完整星散的线路,那前端部份少了后端的支撑,所以就少不了要做点路由、分发之类的事情,而在用路由跳转到新的“页面”后,我须要实行响应的function来猎取初版的数据。有个挫一点的要领:写个switch,依据现在要跳到哪一个页面,来推断实行哪一个function;这类要领work是work,就是保护起来不轻易,今后每添一个新“页面”都要来保护这个switch。

PHP有个很不错的动态机制:

<?php
function test() {
  echo '233333333333';
}
$funcName = 'test';
$funcName();    //输出233333333333

用这个动态机制来做路由异常轻易,因而在做前端框架的路由的时刻,我就想着会不会有相似的解决方案呢?

答案是有的,应用JS的eval函数(PHP也有同名函数),就能够经由过程拼字符串来实行JS代码了,下面是例子:

function test() {
    alert(111);
};

var functionName ='test';

if(typeof(window[functionName]) === "function") {
    eval(functionName + '()');
}

值得注意的是推断字符串对应的function是不是存在(关于一个框架来讲会天真很多,比如说:不是每个页面都须要猎取初版数据),我试过用jquery的$.isFunction和原生typeof要领与eval函数合营,都没法识别到对应的function,末了照样靠window[functionName]猎取到function对应的变量,如许才举行推断。

    原文作者:array_huang
    原文地址: https://segmentfault.com/a/1190000004084516
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞