2016-08-16 2 views
0

У меня есть класс Javascript в ES6, и я хочу написать метод LoadFromJson.javascript, вызывающий Json Parse из разобранного объекта

проблема заключается в том, что JSON.parse возвращает объект, и я не могу написать:

//MyObject.loadFromJson method 
loadFromJson(JsonString) 
{ 
    this=JSON.parse(jsonString); //INVALID// 
} 

Как я могу добиться этого внутри моего класса. Я знаю, что я мог бы написать:

myObject = JSON.parse(jsonString); 

, но это не то, что я хочу, мне нужно:

myObject = new MyObjectClass(); 
myObject.loadFromJson(JsonString); 

Я хочу реализовать «отменить механизм» в моем объекте и быть в состоянии сохранить/восстановить объект.

+0

Любопытно, почему вы не можете сделать myObject = JSON.parse (jsonString) и нужен отдельный метод loadFromJson? –

ответ

2

Вы не можете назначить this. Вот пример, который копирует все атрибуты из обработанного объекта.

class MyObjectClass { 
    loadFromJSON(jsonString) { 
    const parsed = JSON.parse(jsonString); 
    for (const key in parsed) this[key] = parsed[key]; 
    } 
} 

const myObject = new MyObjectClass(); 
myObject.loadFromJSON('{"a":2,"b":null,"c":"abc"}'); 
console.log(myObject); 
Смежные вопросы