page()未定义错误消息

时间:2011-12-02 16:11:22

标签: javascript

我使用以下Javascript从Firebug收到page() is not defined错误消息。为什么呢?

( function() {
    var page = function() {
        var min_central_width = 10;
        function minimumCentralWidth(val) {
            min_central_width = val;
        }
    }

    $(document).ready(function() {
        page().minimumCentralWidth(400);
    });

})();

我还是Javascript的新手。我怎么能避免这个?

2 个答案:

答案 0 :(得分:4)

问题是page没有返回值,因此page()undefined。你必须写这样的东西:

( function() {
    var page = function() {
        // create an object to return:
        var ret = {};
        // set its properties:
        ret.min_central_width = 10;
        ret.minimumCentralWidth =
            function (val) {
                this.min_central_width = val;
            };
        // return it:
        return ret;
    };

    $(document).ready(function() {
        page().minimumCentralWidth(400);
    });

})();

。 。 。但上面并没有做任何事情。它会创建一个新对象,并将对象的min_central_width设置为400。 。 。但它没有使用任何物体,所以上面没有任何有意义的效果。 (这只是因为你删除了与问题无关的代码吗?如果是,那就不用了。: - )

答案 1 :(得分:2)

即使这里有一些好的答案,我还想补充一些,根据你的工作提供一些可能的选择。

如果你真的想让minimumCentralWidth属于Page类的属性,你可以这样做:

( function() {
    var page = function() {
        var min_central_width = 10;
        this.minimumCentralWidth = function (val) {
            min_central_width = val;
            alert('set to ' + val);
        }
    }

    $(document).ready(function() {
        var p = new page(); //new up your object
        p.minimumCentralWidth(400);
    });

})();

如果您正在尝试模拟静态实用程序类,则可以执行以下操作:

( function() {
    var page = new function() { //single instance of your page class
        var min_central_width = 10;
        this.minimumCentralWidth = function (val) {
            min_central_width = val;
            alert('set to ' + val);
        }
    }

    $(document).ready(function() {
        page.minimumCentralWidth(400);
    });

})();

如果您对这些示例的工作方式有任何具体问题,请与我们联系,我将尝试添加更多详细信息!