2017-06-09 26 views
0

私はバグに気がつきました。あるいは、私がバグであると信じているのは、説明が難しいlocalStorageですが、試してみます。localStorageはリフレッシュするまで未定義を返しますか?

私は単純なローカルショッピングカートを書いています。物事が正常に動作するためには、ストレージがすでに存在するかどうかを確認し、ストレージアレイが空でない場合は空の配列を入れてください。

ただし、このチェック後も、2回目にページを更新するまで、localStorageは未定義のままです。以下のコードを参照してください:

const cart = function(name) { 
    this.storageNamespace = name; 
    this.get = store.get(this.storageNamespace); 
}; 

cart.prototype.set = function (data) { 
    store.set(this.storageNamespace, data); 
} 

cart.prototype.add = function (item) { 
    if (this.get === undefined) { 
     store.set(this.storageNamespace, []); 
    } 
    let cart = this.get; 
    if (cart.length !== 0) { 
     for (let i = 0; i < cart.length; i++) { 
      if (cart[i].id === item.id) { 
       cart[i].ammount = Number(cart[i].ammount) + Number(item.ammount); 
       this.set(cart); 
       break; 
      } else if (i === cart.length - 1) { 
       cart.push(item); 
       this.set(cart); 
       break; 
      } 
     } 
    } else { 
    cart.push(item); 
    this.set(cart); 
    } 
} 

いくつかのものがあります。はい、this.getは未定義です。私はコンソールからテストしました。したがって、私はif文の中のコードがなぜ動いていないのかを理解していません。 if文をコンストラクタを含むいくつかの場所に配置しました。どこでも同じ動作。

2回目の訪問でもすべて正常に動作します。

真と評価すると思われるにもかかわらず、何もしていないコード明確にすることです:

if (this.get === undefined) { 
    store.set(this.storageNamespace, []); 
} 
+0

es6スコープ変数を使用しているので、クラスを行うこともできます。ストレージ変数、それは何ですか? 'localStorage'または' sessisionStorage' – Akxe

+0

Store.js、V2です。 – Niels

+0

次にstore.jsの設定を表示します。そして何よりも、これは 'localStorage'自体ではなく、ライブラリでエラーになるかもしれません。 – Akxe

答えて

1
const cart = function(name) { 
    this.storageNamespace = name; 
    this.get = store.get(this.storageNamespace); /* store.get is function 
    call, value be will initialized once instance of this function is created */ 
}; 

あなたが初めてこの関数のインスタンスを作成し、「取得したオブジェクト最初にlocalstorageに値がないので、 "property - undefined"が作成されます。

+0

したがって、getプロパティを宣言する前にifステートメントをコンストラクタに含めることで、それはうまくいくでしょうか? – Niels

+0

this.get = store.get(this.storageNamespace)あなたの追加関数this.get == undefined –

+0

を追加する必要がある答えのコメントに –

関連する問題