【问题标题】:Calling named function from other named function in javascript从javascript中的其他命名函数调用命名函数
【发布时间】:2016-01-06 14:51:43
【问题描述】:

我在 Javascript 中遇到了命名函数的问题。

我有这个重载功能

   SN.Reload = function(settings) {

        var _timer = null;
        var $grid = null;

        var init = function () {

            $grid = $(settings.wrapperSelector);

            if (_timer > 0 || _timer != null)
                _timer = settings.timer;
            else
                _timer = 600000;

            window.setInterval(function () {

                LoadData();

            }, _timer);

        };

        var LoadData = function () {

            $.ajax({
                url: '/data.json',
                type: 'GET',
                dataType: 'json',
                cache: false,
                success: UpdateData,
                error: DataErrorHandler
            });

        };
}

在正常状态下,这将在 X 分钟后运行 LoadData 函数 - 这按预期工作。

我现在有了另一个命名函数

SN.CreateJsonFromDate = function (settings) {

 .... 

  var SuccessLoad = function () {

        _dateLoader.hide();
        _wrapper.slideUp();



    }
}

是否可以在 SN.CreateJsonFromDate 的 SuccessLoad 函数中使用来自 SN.Reload 的 LoadData ?

LoadData 函数在成功时调用 UpdateData 并从 json 数据更新 HTML,我想在 SN.CreateJsonFromDate 中再次调用此函数,因为这将生成一个新的 json 文件。

【问题讨论】:

  • 看起来像一个私有函数。
  • 等等...我能澄清一下SN.Reload 的意图是声明一些变量(其中一些是函数)然后什么都不做并放弃它们吗?
  • @Katana314 - 是的,您可以澄清这一点,但这没有区别。 LoadData 只能在 SN.Reload 范围内访问,并且在编写代码时,不能在其外部访问。
  • @Adam 我只是假设 Reload 用于主要目的,而 OP 现在想将其用于次要目的。由于代码示例是现在编写的,它甚至没有主要用途,因为它从未被调用过,并且一些压缩器会完全删除函数;我的意思是他可能遗漏了重要的代码。例如,如果他遗漏了确实以某种方式从外部访问它的代码,情况就会改变。

标签: javascript jquery json function


【解决方案1】:

不,因为LoadData 不存在于SN.Reload 的范围之外

如果您确实想重新使用 LoadData 函数,请不要将其范围限制在 SN.Reload 内,而是可能(取决于您想要什么)将其附加到命名空间 SN.LoadData

【讨论】:

  • 是的..问题是范围!重写了整个脚本以使重新加载功能可以访问,它现在可以工作了!谢谢!
【解决方案2】:

是的,如果您实例化 SN.Reload。 例如:

var obj = new SN.Reload(settings);

那么你可以在这个对象中使用LoadData,像这样:

obj.LoadData();

是的,您必须使用以下方法公开 LoadData:

this.LoadData = function(){/*your code*/}

【讨论】:

    猜你喜欢
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2014-07-15
    • 2013-11-06
    • 1970-01-01
    • 2011-01-11
    • 2012-06-12
    相关资源
    最近更新 更多