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());