Bir JSON String ayrıştırmak ve bir JavaScript nesnesi açmak nasıl biliyorum. Sen kullanabilirsiniz JSON.parse()
modern tarayıcılarda (ve IE9 +) 'de.
Bu harika, ama bu JavaScript Nesnesini alıp belirli bir JavaScript Nesnesine (yani belirli bir prototiple) nasıl dönüştürebilirim?
Örneğin, varsayalım:
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
Yine, bir JSON dizesini genel bir JavaScript nesnesine dönüştürmeyi merak etmiyorum. Bir JSON dizesini "Foo" nesnesine dönüştürmek nasıl bilmek istiyorum. Yani, Nesnem artık bir 'test' fonksiyonuna ve 'a' ve 'b' özelliklerine sahip olmalıdır.
GÜNCELLEME Biraz araştırma yaptıktan sonra bunu düşündüm ...
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);
Çalışacak mı?
GÜNCELLEME Mayıs, 2017 : Bunu yapmanın "modern" yolu Object.assign
, ancak bu işlev IE 11 veya daha eski Android tarayıcılarında mevcut değildir.