这个需求是在我搭建前端项目框架的时刻碰到的:
因为我走的是前后端完整星散的线路,那前端部份少了后端的支撑,所以就少不了要做点路由、分发之类的事情,而在用路由跳转到新的“页面”后,我须要实行响应的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对应的变量,如许才举行推断。