构建对象关系映射(ORM)

创建模拟的类

Math.guid = function(){  
	return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {  

  
		var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);    
		return v.toString(16);  }).toUpperCase();
};
var Model = {  
        inherited: function(){},  
        created: function(){},  
        prototype: { 
             init: function(){}     
        },  
        create: function(){    
             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(){    
             var instance = Object.create(this.prototype);    
             instance.parent = this;    
             instance.init.apply(instance, arguments);    
             return instance;  
        },
	extend: function(o){    
             var extended = o.extended;    
             jQuery.extend(this, o);      
             if (extended) extended(this);  
        },  
        include: function(o){    
             var included = o.included;    
             jQuery.extend(this.prototype, o);    
             if (included) included(this);  
        }
};
jQuery.extend(Model.prototype, {  
       init: function(atts) {    
             if (atts) this.load(atts);  
       },  
       load: function(attributes){    
             for(var name in attributes)  
                 this[name] = attributes[name];  
       }
});
Model.records = [];
Model.include({ 
   newRecord: true,  
   create: function(){  
       if ( !this.id ) this.id = Math.guid();  
       this.newRecord = false;    
       this.parent.records[this.id] = this.dup();  
   },  
   update: function(){    
       this.parent.records[this.id] = this;  
   },  
   dup: function(){    
        return jQuery.extend(true, {}, this); 
   },
   destroy: function(){    
        delete this.parent.records[this.id]; 
   },
   update: function(){    
        this.parent.records[this.id] = this.dup();  
   },
   save: function(){    
        this.newRecord ? this.create() : this.update();  
   },
   destroy: function(){    
        delete this.parent.records[this.id]; 
   },
   dup: function(){    
        return jQuery.extend(true, {}, this);  
   } 
});
Model.extend({  
   
});
var Asset = Model.create();
var asset  = Asset.init();
asset.name = "same, same";
asset.save();

发布了56 篇原创文章 · 获赞 2 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/fan13938409755/article/details/79983295