Javascript 创建jQuery容器以容纳其他函数

Javascript 创建jQuery容器以容纳其他函数,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我试图创建一个简单的类或容器来容纳一些JavaScript方法,如下所示 var Core = (function () { var Error = { alert: function() { alert('Error => alert called'); }, display: function() { alert('Error => display called');

我试图创建一个简单的类或容器来容纳一些JavaScript方法,如下所示

var Core = (function () {

    var Error = {
        alert: function() {
            alert('Error => alert called');
        },
        display: function() {
            alert('Error => display called');
        }
    };

    var ajax = {
        view: function(){
            alert('Ajax => view called');
        },
        update: function(){
            alert('Ajax => update called');
        }
    };

    var call = function(){
        Error.alert();
        Error.display();
        ajax.view();
        ajax.update();
    };

    $(document).ready(function(){
       call(); // This works fine.
    }());
但由于某些原因,我无法在容器外部调用这些方法。例如,调用如下所示的函数会抛出错误

$(document).ready(function(){
    Core.Error.alert(); // This doesn't work.
    Core.Call(); // This doesn't work.

});
错误:未捕获类型错误:无法读取未定义的属性“Error”


我可以从容器中调用函数。我不熟悉jQuery插件的概念,如果有人能帮助我,我将不胜感激。

您可以像这样导出这些方法(了解更多信息)

var Core = (function () {
  ...

  return {
    Error: Error,
    Ajax: ajax,
    Call: call
  };
})();

Core.Error.alert();
Core.Call();

您可以导出这些方法(了解更多信息),如下所示

var Core = (function () {
  ...

  return {
    Error: Error,
    Ajax: ajax,
    Call: call
  };
})();

Core.Error.alert();
Core.Call();
将其更改为:

var Core = {     
    error: {
        alert: function () {
            alert('Error => alert called');
        },
        display: function () {
            alert('Error => display called');
        }
    }, 

    ajax: {
        view: function () {
            alert('Ajax => view called');
        },
        update: function () {
            alert('Ajax => update called');
        }
    }, 

    call: function () {
        Core.error.alert();
        Core.error.display();
        Core.ajax.view();
        Core.ajax.update();
    }
}

$(document).ready(function () {
    Core.call(); // This works
}());
将其更改为:

var Core = {     
    error: {
        alert: function () {
            alert('Error => alert called');
        },
        display: function () {
            alert('Error => display called');
        }
    }, 

    ajax: {
        view: function () {
            alert('Ajax => view called');
        },
        update: function () {
            alert('Ajax => update called');
        }
    }, 

    call: function () {
        Core.error.alert();
        Core.error.display();
        Core.ajax.view();
        Core.ajax.update();
    }
}

$(document).ready(function () {
    Core.call(); // This works
}());

Error、ajax、call是私有变量/函数,而不是核心的属性。注意:在DOM就绪处理程序函数的末尾有一些未使用的
()
。这不是IIFE。错误、ajax、调用是私有变量/函数,而不是核心的属性。注意:在DOM就绪处理程序函数的末尾有一些未使用的
()
。这不是一个生命。在DOM就绪处理程序的末尾(啊,和OP一样)似乎有一些额外的结束
()
。在DOM就绪处理程序的末尾(啊,和OP一样)似乎有一些额外的结束
()