我试图理解为什么这不起作用。 (尚未验证的基本示例)
当我测试它时,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());
});
答案 0 :(得分:8)
您正在尝试引用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一直抱怨的问题,因为无论如何它都无法找到该方法)。
答案 1 :(得分:2)
Product.addPage
()
.setImage('http://site/images/small_logo.png');
怎么样?
编辑:事实证明我只抓住了一半的问题。看看dtsazza对整个事情的回答。
答案 2 :(得分:0)
这也可行:
Product().addPage().setImage('http://site/images/small_logo.png');
答案 3 :(得分:0)
怎么样:
var Product = {
Page : function() {
return {
_image : '',
Image : function() {
return this._image;
},
setImage : function(imageSrc_) {
this._image = '<img id="image" src="' + imageSrc_ + '" height="100%" width="100%">';
}
};
},
Pages : [],
addPage : function() {
var Page = new Product.Page();
this.Pages.push(Page);
return Page;
},
GetPage : function(pageNumber_) {
return this.Pages[pageNumber_];
}
};
// Begin executing
$(document).ready(function ()
{
Product.addPage().setImage('http://site/images/small_logo.png');
alert(Product.GetPage(0).Image());
});