Wiem, jak używać JSON do tworzenia obiektów, ale wydaje się, że nie ma miejsca, aby użyć JSON do utworzenia obiektu, który jest określonego typu obiektu.Jak używać JSON do tworzenia obiektu dziedziczącego z typu obiektu?
Oto przykład obiekt i utworzenia wystąpienia go:
Person = function() { };
Person.prototype = {
FirstName: null,
GetFirstName: function() {
return this.FirstName;
}
};
//Create an instance of the Person Object
var me = new Person();
me.FirstName = "Chris";
alert(me.GetFirstName()); //alert the FirstName property
Teraz chciałbym użyć JSON, aby utworzyć nowy obiekt Person tak, że funkcja GetFirstName działa na nim.
Oto coś takiego szukam zrobić (ale ten kod nie działa):
var you = new Person() { FirstName: "Mike" };
// OR
var you = new Person{ FirstName: "Mike" };
Czy mimo to używać JSON, aby utworzyć obiekt, który jest od określonego typu?
AKTUALIZACJA: Moja próbka z obiektem Osoba służy tylko do uproszczenia pytania. W rzeczywistości nie jestem w stanie zmodyfikować konstruktorów rzeczywistych obiektów, których potrzebuję do utworzenia instancji. Obiekty są częścią biblioteki innej firmy.
AKTUALIZACJA: Korzystając z poniższych sugestii, udało mi się wymyślić sposób utworzenia obiektu, który dziedziczy z oryginału i zaakceptował JSON w jego konstruktorze. To jest miłe!
personWrapper = function(obj){
for(var o in obj){
this[o] = obj[o];
}
};
personWrapper.prototype = new Person();
var you = new personWrapper({FirstName: "Chris"});
alert(you.GetFirstName());
alert(you instanceof Person); // returns True - we are successfully inheriting from Person!
Jest to dość dużo jak dokładnie Microsoft Ajax działa. Użytkownik definiuje metodę, która zwraca określony typ. Warstwa ajax wysyła zapytania tego typu i tworzy proxy obiektu JS. Następnie wszystkie wywołania json zwracają parametr "__type", który informuje bibliotekę, którego proxy użyć do utworzenia instancji obiektu. – Travis