JSON文字列を解析してJavaScriptオブジェクトに変換する方法を知っています。JSON.parse()
最新のブラウザー(およびIE9 +)で使用できます。
それはすばらしいことですが、そのJavaScriptオブジェクトをどのようにして特定の JavaScriptオブジェクト(つまり、特定のプロトタイプ)に変換できるでしょうか。
たとえば、次のように仮定します。
function Foo()
{
this.a = 3;
this.b = 2;
this.test = function() {return this.a*this.b;};
}
var fooObj = new Foo();
alert(fooObj.test() ); //Prints 6
var fooJSON = JSON.parse({"a":4, "b": 3});
//Something to convert fooJSON into a Foo Object
//....... (this is what I am missing)
alert(fooJSON.test() ); //Prints 12
繰り返しますが、JSON文字列を一般的なJavaScriptオブジェクトに変換する方法については疑問に思いません。JSON文字列を「Foo」オブジェクトに変換する方法を知りたい。つまり、私のオブジェクトには関数「test」とプロパティ「a」と「b」が含まれているはずです。
更新 いくつかの調査を行った後、私はこれを考えました...
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({"a":4, "b": 3}, Foo);
うまくいきますか?
2017年5月更新:これを行う「モダンな」方法はを使用する方法ですObject.assign
が、この機能はIE 11以前のAndroidブラウザーでは使用できません。