0

重複の可能性:
jsonデータをメソッドがアタッチされたオブジェクトに変換する最も簡単な方法は?
プレーンオブジェクトをjavascriptの関数インスタンス(「クラス」)にキャストする

私は次のようなオブジェクトを持っています:

var Person = function(name, age) {
  this.name = name,
  this.age = age;
}

Person.prototype.talk = function(message) {
    console.log(message);
}

次のようにオブジェクトを作成します。

var person = new Person("Test", 20);

これらのオブジェクトは、ブラウザのローカルストレージにJSON(stringify)として保存されます

オブジェクトを読み戻すと、データは取得されますが、メソッドがアタッチされていません。つまり、talk()がメソッドとして使用できなくなりました。それらを再度取り付けるにはどうすればよいですか?

window.localStorage["person"] = JSON.stringify(new Person('Test', 20));
var person = window.localStorage["person"];
person.talk("Hello");

私が得るエラーは

Uncaught TypeError: Object {"name":"Test","age":20} has no method 'talk' 

明らかですよね?しかし、これがPersonオブジェクトであることをどのように知ることができますか?または、読み取りオブジェクトから新しいPersonオブジェクトに属性をコピーする必要がありますが、それが唯一の方法ですか?

4

1 に答える 1

1

Or should I just copy the attributes from the read object onto a new Person object, is that the only way?

はい、PersonFactoryを作成するか、同様のデザインパターンを使用して、Personを表すjsonデータから新しいPersonオブジェクトを作成します。

于 2013-01-10T05:04:44.527 に答える