Object Validation

by Robodude

JavaScript

Object.prototype.validate = function (i) {
                var o = this;

                var valid = true;

                for (var iprop in i) {

                    if (i.hasOwnProperty(iprop)) {

                        var objectPropertyOfInterface = o[iprop];

                        if (objectPropertyOfInterface) {

                            if (typeof i[iprop] === "object") {

                                var deepValidate = objectPropertyOfInterface.validate(i[iprop]);

                                if (!deepValidate) {
                                    valid = false;
                                    break;
                                }

                            } else {
                                var interfaceProperty = i[iprop].toLowerCase().trim();

                                if (interfaceProperty === "array") {

                                    if (!Array.isArray(objectPropertyOfInterface)) {
                                        valid = false;
                                        break;
                                    }

                                }
                                else if (interfaceProperty === "date") {

                                    if (Object.prototype.toString.call(objectPropertyOfInterface) !== '[object Date]') {
                                        valid = false;
                                        break;
                                    }

                                }
                                else if (typeof objectPropertyOfInterface !== interfaceProperty) {
                                    valid = false;
                                    break;
                                }
                            }

                        } else {
                            valid = false;
                            break;
                        }

                    }

                }

                return valid;
            };

           ...