2017-12-09 7 views
1

ローカルストレージ内のオブジェクトを持つオブジェクトを保存するために、メインatributesは(そのクラスが既にgetterとsetterを持つ)です。どのように私はクラスVideoclubを持って

var nombre = nom; 
var clientes = new Array(); 
var productos = new Array(); 

私はオブジェクトの配列を作成しようとしていますVideoclub

let videoclubs = new Array(); 
let videoclub = new Videoclub("videoshop"); // videoshop is the atribute nombre 
videoclubs.push(videoclub); 

私はローカルストレージに

localStorage.setItem(nombreEnStorage, JSON.stringify(videoclubs)); 

と私は地元のSTからピックアップし、配列を保存しようとしましたorage

function cargar(nombreEnStorage) { 
    let texto = localStorage.getItem(nombreEnStorage); 
    return JSON.parse(texto); 
} 

私はビデオカメラのどのような方法にもアクセスできません。ゲッターやセッターまではアクセスできません。

コンソールは言う:あなたが機能にアクセスするためにクラスのオブジェクトに再び変換したい場合は

Uncaught TypeError: videoclubs[0].getNombre is not a function

+5

関数は有効なJSONではないため、ストリング化することはできません。 – elclanrs

+1

配列をマップし、各項目に 'new Videoclub()'を返す必要があります – charlietfl

+0

JSONは関数を表現することができない以外にも、 'Videoclub'をどのように表現するのか分かりませんが、 'JSON.stringify'は、構築されたオブジェクトを通常のオブジェクトに変換し、継承情報を失います。 –

答えて

0

あなたはここで働い例

let persons = new Array(); 
let obj1 = {name: "John Doe", age: 30, car: {color: "red", model: "Honda"}}; 

persons.push(obj1); 
localStorage.setItem("persons", JSON.stringify(persons)); 
function cargar(nombreEnStorage) { 
    let texto = localStorage.getItem(nombreEnStorage); 
    return JSON.parse(texto); 
} 
cargar("persons"); 
let personsFromLocalStorage = cargar("persons"); 
console.log(personsFromLocalStorage); 

を持って次の操作を行います

Object.cast = function cast(rawObj, constructor) 
{ 
    var obj = new constructor(); 
    for(var i in rawObj) 
     obj[i] = rawObj[i]; 
    return obj; 
} 
var fooJSON = Object.cast(persons, Object)[0]; 
console.log(fooJSON); 
+0

これでどのようにして問題が解決しないのですか?オブジェクトをローカルストレージに保存する方法は?あなたのクラスの内部構造、またはあなたのメソッドにアクセスする方法localStorageに無関係 –

+0

私はobj [i] = rawObj [i]の理由を理解していません。あなたはそれを説明できますか? – Daniel

+0

これは単なる例です。 –

関連する問題