これと非常によく似た質問を見たことがありますが、それらが明確に回答されているかどうかを判断することはできません。
私は自分のオブジェクトの利便性 (および明快さ) を持ちたいと思っていますCardboardBox()
。コードは含まれず、データのみが含まれます。これをデータベースに書き込んで後で読み返したいのですが、明らかにObject()
読み返しのときの型です。それがかつて何であったかを知るために私が考えることができるのは、次のことだけです。
type
CARDBOARD_BOX に設定したメンバー変数がある- new をインスタンス
CarbardBox()
化し、(ボックス内の) 関数を使用して、プロパティをObject()
新しいCardboardBox()
オブジェクトにコピーします。
これを行うより良い方法はありますか?実際のタイプを変更できると確信しています。
function CardboardBox() {
this.type = "CARDBOARD_BOX"
this.name = "No set";
this.populate = new function(obj) {
// populate this object with obj properties
}
var box = new CarboardBox(); // CarboardBox
box.name = "My Box";
send = JSON.stringyfy(box);
.
.
.
obj = JSON.parse(send); // Object
if (obj.type == "CARDBOARD_BOX") {
savedBox = new CardboardBox();
savedBox.populate(obj);
}
前もって感謝します...スティーブ
[編集] 私のテストコード。
function CardboardBox(n) {
this.name = n;
}
var box = new CardboardBox("My Box");
send = JSON.stringify(box); // JSON CarboardBox()
obj = JSON.parse(send, function fn(obj) { // Object() returned
log("OB: "+obj.type);
return obj.type === 'CardboardBox' ? new CardboardBox(obj) : CardboardBox;
});
console.log(obj);
出力は次のとおりです。
OB: undefined utils.js:40
OB: undefined utils.js:40
function CardboardBox(n) {
this.name = n;
}