/** * @ description Model MVC中M 数据模型 * @ Object * @ public * @ create method IE不支持 */ if(typeof Object.create !== ‘fnction‘){ Object.create = function(o){ function F(){} F.prototype = o; return new F() } } Math.guid = function(){ return ‘xxxxxxxx-xxxx-4yxx-xxxxxxxxxxxx‘.replace(/[xy]/g,function(c){ var v = Math.random()*16|0, c = c == ‘x‘ ? v : (v & 0x8), c = c.toString(16); return c.toUpperCase() }) } var Model = { created : function(){ }, prototype : { init: function(){ console.log(‘prototype.init‘) } }, extend : function(o){ for(var i in o){ this[i] = o[i] } }, include : function(o){ for(var i in o){ this.prototype[i] = o[i] } }, create : function(){ var object = Object.create(this);//object 继承 Model object.parent = this; object.prototype = object.fn = Object.create(this.prototype) // object.prototype 继承 Model.prototype object.created(); return object }, init : function(){ var instance = Object.create(this.prototype); instance.parent = this; instance.init.apply(instance,arguments); return instance; } } /* *Object 存储实例对象 */ Model.records = {}; var Asset = Model.create(); Model.include({ init : function(attr){ if(attr){ this.load(attr) } }, load : function(attr){ for(var i in attr){ this[i] = attr[i] } } }) Model.include({ newRecords : true, create : function(){ this.newRecords = false; this.id = this.id || Math.guid(); this.parent.records[this.id] = this.dup(); }, destroy : function(){ delete this.parent.records[this.id] }, updata : function(){ this.parent.records[this.id] = this.dup(); }, save : function(){ this.newRecords ? this.create() : this.updata() }, dup : function(){ var o = {}; for(var i in this){ o[i] = this[i] } return o; } }) Model.extend({ find : function(id){ var record = this.records[id] if(!record) throw(‘no you need object‘) return record.dup() }, created : function(){ this.record = {} } }) Model.extend({ populate : function(values){ this.records = {}; for(var i = 0, len = values.length; i < len; i++){ var record = this.init(values[i]); record.newRecords = false; record.id = record.id || Math.guid(); this.records[record.id] = record; } } }) var asset = Asset.init({name : ‘xiaohui108‘})
时间: 2024-10-07 05:06:43