Javascript实体对象生成器

 弄了一上午 模拟以前C#写了一个Javascript的对象生成器,支持对象转JSON集合,还有单属性访问器。没事技术含量为了熟悉原型以及原型链做的练习。

//申明扩展类
var ExtendClass = function () { };

//属性访问器
ExtendClass.prototype.accessor = function () {
    this.get = function () {
        return this.val;
    }
    this.set = function (val) {
        if (arguments.length == 2) {
            if (arguments[1] instanceof Function) {
                arguments[1](val);
            }
            val = arguments[0];
        }
        this.val = val;
    }
}
//值正确性校验
ExtendClass.prototype.isCorrectValue = function (val) {
    var flag = true;
    if (val instanceof Object && val instanceof Function && val == undefined && isNaN(isFinite)) {
        flag = false;
    }
    return flag;
}
//动态实体生成
ExtendClass.prototype.entityAccessor = function (entityList) {
    var entity = entityList;
    if (entity instanceof Object) {
        for (var i in entity) {
            var access = new extend.accessor();
            this.constructor.prototype[i] = access;
            var et = entity[i];
            var val = et["value"];
            if (extend.isCorrectValue(val)) {
                //判断是否存在附加函数
                if (et["setVerify"]) {
                    this.constructor.prototype[i].set.call(this.constructor.prototype[i], val, et["setVerify"])
                } else {
                    this.constructor.prototype[i].set(val);
                }
            }
        }
    }
}
//实体转换JSON输出
ExtendClass.prototype.getEntityList = function (entityObj) {
    var entList = entityObj;
    var tempArray = [];
    if (entList instanceof this.entityAccessor) {
        for (var en in entList) {
            tempArray.push(JSON.parse('[{ "' + en + '": "' + entList[en].get() + '" }]')[0]);
        }
    }
    return tempArray;
}


var setVer = function (val) {
    if (parseInt(val) < 0) {
        throw Error(this.lineNumber + "not age number!");
    }
}
var entityList = {
    "name": { value: "topaz.tang" },
    "age": { value: 25, get: true, setVerify: setVer },
    "sex": { value: "Men", get: true },
    "birthday": { value: "1988-11-10" }
}


var extend = new ExtendClass();

var entityFn = new extend.entityAccessor(entityList);   //实例化实体生成器  参数1:实体JSON列表
console.log(entityFn.age.get()) //输出  set函数设置的值.
var allEntity = extend.getEntityList(entityFn);   //输出 [{key:value},{key:value},{key:value}...n]
console.log(JSON.stringify(allEntity));

祝大家快乐工作,快乐生活。

谢谢!