Javascript Can';t访问对象方法

Javascript Can';t访问对象方法,javascript,Javascript,我创建了一个名为NewsCalendar的准名称空间/类。我的目的是避免污染全局名称空间以及隐藏应该是私有的函数。但当我试图调用应该是公共方法的方法时,我得到“对象不支持此属性或方法” 这些评论是为了表明我对每个项目的预期 我试着像这样调用onLoad函数: NewsCalendar.onLoad(); 但这会导致“对象不支持此属性或方法”错误。我希望能够像使用命名空间一样使用NewsCalendar,并且能够通过使用NewsCalendar.propertyname或NewsCalendar

我创建了一个名为NewsCalendar的准名称空间/类。我的目的是避免污染全局名称空间以及隐藏应该是私有的函数。但当我试图调用应该是公共方法的方法时,我得到“对象不支持此属性或方法”

这些评论是为了表明我对每个项目的预期

我试着像这样调用onLoad函数:

NewsCalendar.onLoad();

但这会导致“对象不支持此属性或方法”错误。我希望能够像使用命名空间一样使用NewsCalendar,并且能够通过使用NewsCalendar.propertyname或NewsCalendar.methodname()调用附加到此对象的任何变量/方法。

您必须创建实例:

var calendar = new NewsCalendar();
calendar.onLoad();

请尝试以下设置:

var NewsCalendar = (function () {
    var privatevar;

    var onLoadHandler = function () {
        //Do Stuff
    };

    function getWeekStart(date) {
        //Do Stuff
    }

    return {
        onLoad: onLoadHandler
    };
})();
然后使用:

NewsCalendar.onLoad();
返回的
{}
中的任何内容都是公共的。周围函数中的任何内容都只能由其内部的任何内容访问


我建议使用此设置的原因是,您似乎不想实例化多个对象,而是将其用作属性/方法库。

您最终找到了答案吗?如果是,选择一个并接受它。否则,解释一下发生了什么事情你的工作原理。我只是不喜欢那样使用return。不是你的错,我只是觉得javascript语法有时候很难看。
NewsCalendar.onLoad();