Я пытаюсь создать корзину покупок для обучения. Я следующие кодыИспользование самоназывающих анонимных функций
HTML
<div id="MyCart" class="product-cart">
<ul>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
</ul>
</div>
Js
var cart = (function() {
cart.createCart = function (cartId) {
console.log(cartId);
cartId = document.getElementById(cartId);
}
return cart;
}());
var shoopingCart = cart.createCart("MyCart");
Но этот код бросками следующая ошибка
Uncaught TypeError: Cannot set property 'createCart' of undefined
Проведя несколько часов в Интернете и после некоторых уроков я сделал следующие изменения кода, а затем начал работать.
Но все-таки я не понимаю, что я сделал здесь
var cart = (function (cart) {
cart.createCart = function (cartId) {
console.log(cartId);
cartId = document.getElementById(cartId);
}
return cart;
}(cart || {}));
var shoopingCart = cart.createCart("MyCart");
Может кто-нибудь, пожалуйста, объясните мне, почему код начал работать после прохождения cart || {}
выражения в анонимную функцию? Некоторые подробные объяснения были бы замечательными. :)
телега не определено в cart.createCart. Вы должны использовать эту функцию внешней корзины. –
функция ожидает 'cart' в качестве параметра, без прохождения' cart || {} 'вы ничего не проходите, поэтому' cart' будет неопределенным. помните, что IIFE имеют полностью изолированную область –