如何用JavaScript动态呼叫函数(两种方式)

 更新时间:2013年05月03日 16:07:46   作者:  
下面介绍一下动态呼叫函数目前应该有下面两种方式,它们之间的使用及对比,感兴趣的朋友可以研究下,希望可以帮助到你
近来的使用者,越来越强调 UI 介面的互动,渐渐原本对一条小龙来说只是配角的 JavaScript (以下简称 JS) 变成的主角,占了很大一块的用途。

像是最近很热门的 ASP.NET 的 MVC 里面就直接Include JQuery 可见一般。

MVC 用了一阵子,一条小龙甚至感觉 MVC 中的 Controller 根本就是 JS 在控制的,这样怎么把 UI 工作独立,切给美工用,感觉也是蛮大的疑问。
看来后面的美工,只会绘图、拉画面是不行的,一定要会 JS、Flash 等等前端控制语言,才会吃香。

这边,一条小龙介绍一下,如何用 JavaScript 动态呼叫函数,这个时候需要先介绍一下 前提,这样读者才能了解,下面的技术能应用在哪里。
一般会使用到 动态呼叫,基本上都是 后端动态产生 JS的程式码,在由前端的 JS 框架,来呼叫使用。

会需要这样做的用途,不外乎,动态设定 UI 的栏位、样式、资料 等等,另外一种可能,就是保留 JS 框架的扩充性,让后面的开发人员,可以根据每只程式的特性,在额外编写代码来扩充原有JS 框架的功能。

下面 就来介绍一下,动态呼叫函数 目前就一条小龙所知应该有下面 两种方式
复制代码 代码如下:

function myAlert(value) {
document.write("myAlert - " + value + "<br>");
}
$(function () {
eval("myAlert")("test");
window["myAlert"]("test");
}

一般来说,比较正规还是要使用 window 这个object 来查询 function 是否存在,用 eval 弹性太大比较有风险。

而且直接照上述来实作,会有蛮大风险,一但被呼叫的函数不存在,整个画面就会出错,所以 在使用上,需再加上判断式,从这角度这时eval 就无法使用了,因为使用 eval 就是要产生 function 这个 object 了,而 window 只是查询有无 object,所以当 function 不存在,eval 就会直接报错了,这样 读者应该比较能了解其中差异。
范例程式如下
复制代码 代码如下:

function myAlert(value) {
document.write("myAlert - " + value + "<br>");
}
$(function () {
var fnName = "myAlert";
var fn = window[fnName];
if (typeof fn == "function") {
fn.apply(window, ["window - test"]);
}
}

最后,是我自己又另外想出的一种方式,如下
复制代码 代码如下:

function myAlert(value) {
document.write("myAlert - " + value + "<br>");
}
$(function () {
if (typeof (myAlert) == 'function') {
myAlert("typeof - test");
}
}

虽然这种方式会牺牲一些弹性,但相反却可以用这种方式,来限制后续开发人员的命名原则,例如像是框架中的 Init() Load() 等等,皆可用如此方式则可以将使用方式固定下来,不至于发散出去,也方便后续的维护成本。

相关文章

  • 解决WordPress使用CDN后博文无法评论的错误

    解决WordPress使用CDN后博文无法评论的错误

    这篇文章主要介绍了解决WordPress使用CDN后博文无法评论的错误的方法,同时提醒注意WordPress使用版本的jQuery版本支持度,需要的朋友可以参考下
    2015-12-12
  • 基于JavaScript实现购物网站商品放大镜效果

    基于JavaScript实现购物网站商品放大镜效果

    大家在日常生活中都有网购的经验,有的网站会有商品放大镜功能,效果非常棒,那么基于js代码是如何实现的呢?下面小编给大家带来了基于js实现购物网站商品放大镜效果,非常不错,感兴趣的朋友参考下吧
    2016-09-09
  • js实现回放拖拽轨迹从过程上进行分析

    js实现回放拖拽轨迹从过程上进行分析

    今天的记录,记录回放拖拽痕迹,先从过程上进行分析,需要的朋友可以参考下
    2014-06-06
  • 如何在微信小程序中使用less详解(最优方式)

    如何在微信小程序中使用less详解(最优方式)

    这篇文章主要给大家介绍了关于如何在微信小程序中使用less(最优方式)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • javascript实现tab切换的两个实例

    javascript实现tab切换的两个实例

    这篇文章主要介绍了javascript实现tab切换的两个实例,是对之前方法原理的进一步延伸,需要深入了解的同学可以参考一下
    2015-11-11
  • JS输出空格的简单实现方法

    JS输出空格的简单实现方法

    下面小编就为大家带来一篇JS输出空格的简单实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • 详解小程序输入框闪烁及重影BUG解决方案

    详解小程序输入框闪烁及重影BUG解决方案

    这篇文章主要介绍了详解小程序输入框闪烁BUG解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • JS如何判断对象是否包含某个属性

    JS如何判断对象是否包含某个属性

    这篇文章主要介绍了JS如何判断对象是否包含某个属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 密码强度检测效果实现原理与代码

    密码强度检测效果实现原理与代码

    密码强度检测有利于提醒增加密码的安全指数,更好的保护密码安全,接下来介绍密码强度检测效果的实现
    2013-01-01
  • JS使用AudioContext实现音频流实时播放

    JS使用AudioContext实现音频流实时播放

    这篇文章主要为大家详细介绍了JavaScript如何使用AudioContext实现音频流实时播放功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01

最新评论