我刚刚开始关闭。拥有私有的私有变量和方法。我遇到的问题是在调用方法时,开发人员控制台告诉我" undefined不是函数"。
使用Javascript:
var shop = (function() {
var items = [];
return {
Item: function(data) {
this.id = data[0];
this.item = data[1];
this.description = data[2];
this.price = data[3];
this.count = data[4];
},
addItem: function(id, item, description, price) {
items.push(this.Item(id, item, description, price));
},
print: function() {
var itemCon = document.getElementById('items'),
html = "";
items.forEach(function(item) {
html += '<div class="item">';
for(prop in item) {
if(prop != "id") {
if(prop != "count") {
if(prop === "price") {
html += '<p><span class="title">' + prop + '</span>: £' + item[prop] + '</p>';
} else {
html += '<p><span class="title">' + prop + '</span>: ' + item[prop] + '</p>';
};
};
};
};
html += '<button class="addButton" data-id="' + item.id + '">Add to Basket</button>'
html += '</div>';
});
itemCon.innerHTML += html;
}
};
});
function init() {
shop.addItem("0", "coat", "Warm yes!", 24.99);
shop.print;
};
window.onload = init;
答案 0 :(得分:1)
你没有调用IIFE,所以它没有返回你想要的对象。
var shop = (function() {
var items = [];
return {
// your code
};
})(); // <-- Invoke it!
你拥有它的方式,你只是将匿名函数分配给shop
变量,而函数对象没有addItem()
方法。