Próbuję zbudować wózek na zakupy do celów edukacyjnych. Mam następujące kodyKorzystanie z samodzielnego wywoływania funkcji anonimowych
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");
Ale ten kod rzuca następujący błąd
Uncaught TypeError: Cannot set property 'createCart' of undefined
Po spędzeniu kilku godzin w internecie i po kilku tutorialach zrobiłem po zmianach w kodzie, a następnie zaczął działać.
Ale ja wciąż nie rozumiem co mam zrobić tutaj
var cart = (function (cart) {
cart.createCart = function (cartId) {
console.log(cartId);
cartId = document.getElementById(cartId);
}
return cart;
}(cart || {}));
var shoopingCart = cart.createCart("MyCart");
Czy ktoś proszę mi wyjaśnić, dlaczego kod zaczął działać po przejściu cart || {}
ekspresji do funkcji anonimowej? Niektóre szczegółowe wyjaśnienia byłyby świetne. :)
koszyk jest niezdefiniowane w cart.createCart. Powinieneś użyć tej funkcji poza wózkiem. –
funkcja oczekuje "koszyka" jako parametru, bez podania 'cart || {} "nic nie przekazujesz, więc' koszyk' będzie niezdefiniowany. pamiętaj, że IIFE mają całkowicie izolowany zakres –