• 给模型添加ORM,与持久化记录


    var Model = {
        inherited:function () {
        },
        created:function () {
        },
    
        prototype:{
            init:function () {
            }
        },
    
    
        //给类添加属性
        extend:function (obj) {
            var extended = obj.extended;
            for (var i in obj) {
                this[i] = obj[i];
            }
            if (extended) extended(klass);
        },
    
        //给实列添加属性
        include:function (obj) {
            var included = obj.included;
            for (var i in  obj) {
                this.prototype[i] = obj[i];
            }
            //触发回调
            if (included) included(klass);
        },
    
    
        create:function () {
            //子类 返回一个新对象,继承自model对象,创建新模型
            var object = Object.create(this);
            //指向父类
            object.parent = this;
            //子类原型方法
            object.prototype = object.fn = Object.create(this.prototype);
    
            object.created();
            this.inherited(object);
            return object;
        },
    
        init:function () {
            //返回一个新对喜爱那个,继承自model.prototype -> model对象的一个实例
            var instance = Object.create(this.prototype);
            instance.parent = this;
            instance.init.apply(instance, arguments);
            return instance;
        }
    
    }
    
    //保存资源对象
    Model.records = {};
    
    //持久化记录
    Model.include({
        newRecord:true,
        create:function () {
            this.newRecord = false;
            this.parent.records[this.id] = this;
        },
        destroy:function () {
            delete this.parent.records[this.id];
        },
        update:function () {
            this.parent.records[this.id] = this;
        },
        save:function () {
            this.newRecord ? this.create() : this.update();
        },
        find:function (id) {
            return this.records[id];
        }
    
    })
    
    //继承的父类model的一个构造函数
    var Asset = Model.create();
    
    //实例对象
    var asset1 = Asset.init();
    
    asset1.name = "Aaron-1";
    asset1.id = 1;
    asset1.save();
    
    var asset2 = Asset.init();
    
    asset2.name = "Aaron-2";
    asset2.id = 2;
    asset2.save();
    
    
    console.log(
        asset1
    )

  • 相关阅读:
    Python数据分析与机器学习-Matplot_2
    Python数据分析与机器学习-Matplot_1
    1008. 数组元素循环右移问题 (20)
    Latex小技巧
    执行PowerShell脚本的时候出现"在此系 统上禁止运行脚本"错误
    Linux使用MentoHust联网线上校园网, 回到普通有线网络却连不上?
    Re:uxul
    Linux下nautilus的右键快捷菜单项设置
    从入门到入狱——搭讪技巧
    Latex命令
  • 原文地址:https://www.cnblogs.com/aaronjs/p/2654441.html
Copyright © 2020-2023  润新知