Sto cercando di creare un carrello acquisti a scopo di apprendimento. Ho seguito i codiciUtilizzo di funzioni anonime autoinvitrici
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");
Ma questo codice genera seguente errore
Uncaught TypeError: Cannot set property 'createCart' of undefined
Dopo aver trascorso qualche ora in internet e seguendo alcuni tutorial ho seguito le modifiche al codice e poi ha iniziato a funzionare.
Ma ancora non capisco quello che ho fatto qui
var cart = (function (cart) {
cart.createCart = function (cartId) {
console.log(cartId);
cartId = document.getElementById(cartId);
}
return cart;
}(cart || {}));
var shoopingCart = cart.createCart("MyCart");
qualcuno può spiegare a me perché il codice ha iniziato a lavorare dopo il passaggio cart || {}
espressione nella funzione anonima? Qualche spiegazione dettagliata sarebbe grandiosa. :)
carrello non è definito in cart.createCart. Dovresti usare quella funzione del carrello esterno. –
la funzione si aspetta 'carrello' come parametro, senza passare' carrello || {} 'stai passando nulla, quindi' cart' sarà indefinito. ricorda che l'IIFE ha un ambito completamente isolato –