我试图了解为什么这不起作用。 (尚未验证的基本示例)

当我对其进行测试时,firebug指出未找到Product.addPage。

var Product = function ()
{
    var Page = function ()
    {
        var IMAGE = '';

        return {
            image : function ()
            {
                return IMAGE;
            },
            setImage : function (imageSrc_)
            {
                IMAGE = '<img id="image" src="' + imageSrc_ + '" height="100%" width="100%">';
            }
        };
    };
    var PAGES = [];

    return {
        addPage : function ()
        {
            var len = PAGES.length + 1;
            PAGES[len] = new Page();
            return PAGES[len];
        },
        page : function (pageNumber_)
        {
            var result = PAGES[pageNumber_];
            return result;
        }
    };
};

// Begin executing
$(document).ready(function ()
{
    Product.addPage.setImage('http://site/images/small_logo.png');
    alert(Product.page(1).image());
});

最佳答案

您正在尝试引用Product函数的addPage属性(在本例中为构造函数),而不是在返回的对象上进行引用。

您可能想要类似的东西:

// Begin executing
$(document).ready(function ()
{
    var product = new Product();
    product.addPage().setImage('http://site/images/small_logo.png');
    alert(product.page(1).image());
});

还将括号添加到addPage调用中(尽管这不是FireBug一直会抱怨的问题,因为无论如何它都无法找到该方法)。

10-06 05:03