资讯专栏INFORMATION COLUMN

JS根据动态生成的字符串,验证是否存在对应function并执行

CollinPeng / 1889人阅读

摘要:有个挫一点的方法写个,根据目前要跳到哪个页面,来判断执行哪个这种方法是,就是维护起来不方便,以后每添一个新页面都要来维护这个。

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

由于我走的是前后端完全分离的路线,那前端部分少了后端的支持,所以就少不了要做点路由、分发之类的工作,而在用路由跳转到新的“页面”后,我需要执行相应的function来获取第一版的数据。有个挫一点的方法:写个switch,根据目前要跳到哪个页面,来判断执行哪个function;这种方法work是work,就是维护起来不方便,以后每添一个新“页面”都要来维护这个switch。

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


用这个动态机制来做路由非常方便,因此在做前端框架的路由的时候,我就想着会不会有类似的解决方案呢?

答案是有的,利用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对应的变量,这样才能进行判断。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91571.html

相关文章

  • 前端知识点(一)

    摘要:为了解决协议的这一缺陷,需要使用另一种协议安全套接字层超文本传输协议,为了数据传输的安全,在的基础上加入了协议,依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。是超文本传输协议,信息是明文传输,则是具有安全性的加密传输协议。 1、请说说从用户输入url到呈现网页,这中间都发生了什么 ? 1、域名解析 域名解析的过程:    1).查询浏览器自身DNS缓存 ...

    tinylcy 评论0 收藏0
  • 前端知识点(一)

    摘要:为了解决协议的这一缺陷,需要使用另一种协议安全套接字层超文本传输协议,为了数据传输的安全,在的基础上加入了协议,依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。是超文本传输协议,信息是明文传输,则是具有安全性的加密传输协议。 1、请说说从用户输入url到呈现网页,这中间都发生了什么 ? 1、域名解析 域名解析的过程:    1).查询浏览器自身DNS缓存 ...

    defcon 评论0 收藏0
  • 前端知识点(一)

    摘要:为了解决协议的这一缺陷,需要使用另一种协议安全套接字层超文本传输协议,为了数据传输的安全,在的基础上加入了协议,依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。是超文本传输协议,信息是明文传输,则是具有安全性的加密传输协议。 1、请说说从用户输入url到呈现网页,这中间都发生了什么 ? 1、域名解析 域名解析的过程:    1).查询浏览器自身DNS缓存 ...

    iliyaku 评论0 收藏0
  • jQuery中选择器引擎Sizzle

    摘要:生成终极匹配器主要是返回一个匿名函数,在这个函数中,利用方法生成的匹配器,去验证种子集合,筛选出符合条件的集合。在这个终极匹配器中,会将获取到的种子元素集合与匹配器进行比对,筛选出符合条件的元素。 读Sizzle的源码,分析的Sizzle版本号是2.3.3。 Sizzle的Github主页 浏览器原生支持的元素查询方法: 方法名 方法描述 兼容性描述 getElementBy...

    elisa.yang 评论0 收藏0
  • JS基础知识学习(三)

    摘要:基础知识字符串中常用的方法在中用单双引号包裹起来的都是字符串字符串就是由到多个字符组成的特点一以数字作为索引,从零开始特点二有属性,存储的是当前字符串中字符的个数字符长度如果指定的索引不存在获取的结果是真实项目中,我们经常操作字符串,此时 js基础知识 JavaScript 字符串中常用的方法 在JS中用单(双)引号包裹起来的都是字符串 var str=welcome to my ho...

    keke 评论0 收藏0

发表评论

0条评论

CollinPeng

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<