JSFiddle - React, Tailwind, and code Playground
JavaScript
var Person = function (name, age) {
this.name = name;
this.age = age;
}
Person.prototype = {
getAgePlusTwo: function () {
return this.age + 2;
}
}
function parseObject(jsonObject, classToRealize) {
var isCorrect = true;
var comparison = new classToRealize();
var realizedObject = Object.create(classToRealize.prototype);
if (Object.keys(jsonObject).length === Object.keys(comparison).length) {
for (property in comparison) {
if (typeof(comparison[property]) != 'function') {
if(!jsonObject.hasOwnProperty(property)) {
isCorrect = false;
break;
} else {
realizedObject[property] = jsonObject[property];
}
}
}
} else {
isCorrect = false;
}
if (isCorrect)
return realizedObject;
else
return null;
}
function Bob (secondThing){
this.thing = secondThing;
}
var p1 = { name: 'Person', age: 25};
var p2 = parseObject(p1, Person);
var p3 = {name: 'Person', age: 25, test: 'something'};
var p4 = parseObject(p3, Person);
var a = {thing: 'rr'};
var b = parseObject(a, Bob);
alert(b instanceof Bob);
alert(p4 instanceof Person);
alert(p2 instanceof Person);
alert(p2.getAgePlusTwo());