Я знаю, как использовать JSON для создания объектов, но, похоже, не существует возможности использовать JSON для создания объекта с определенным типом объекта.
Вот пример объекта и создание его экземпляра:
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
Теперь я хотел бы использовать JSON для создания нового объекта Person, чтобы на нем работала функция GetFirstName.
Здесь что-то вроде того, что я ищу (но этот код не работает):
var you = new Person() { FirstName: "Mike" };
// OR
var you = new Person{ FirstName: "Mike" };
Можно ли использовать JSON для создания объекта определенного типа?
UPDATE: мой образец с объектом Person просто упрощает вопрос. На самом деле, я не могу изменить конструкторы фактических объектов, которые мне нужны для создания экземпляров. Объекты являются частью сторонней библиотеки.
UPDATE: Используя некоторые из приведенных ниже предложений, я смог выяснить способ создания объекта, который наследуется от оригинала, и принять JSON в нем конструктор. Это аккуратно!
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!