JS — ORM 原理和實現過程

來源:互聯網
上載者:User
 <script type=text/javascript src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" /></script> <script type="text/javascript">if(typeof Object.create !== "function"){    Object.create = function(o){       function _F(){}       _F.prototype = o;       return new _F();    }}var Model = {   inherited:function(){},   created:function(){      this.records = {};   },   prototype:{      init:function(){}   },   create:function(){      var obj = Object.create(this);      obj.parent = this;      obj.prototype = obj.fn = Object.create(this.prototype);      obj.created();      this.inherited(obj);      return obj;   },   init:function(){      var instance = Object.create(this.prototype);      instance.parent = this;      instance.init.apply(instance,arguments);      return instance;   },   include:function(o){      var include = o.included;      jQuery.extend(this.prototype,o);      if(include) include(this);   },   extend:function(o){      var extend = o.extended;      jQuery.extend(this,o);      if(extend) extend(this);    } };Model.include({   init:function(attr){      if(attr)         for(var name in attr)            this[name] = attr[name];   }});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();}//Model.records = {};Model.include({   newRecord:true,   create:function(){      this.newRecord = false;      this.id = this.id || Math.guid();      this.parent.records[this.id] = this;   },   update:function(){      this.parent.records[this.id] = this;   },   destory:function(){      delete this.parent.records[this.id];   },   save:function(){      this.newRecord ? this.create() : this.update();   },   find:function(id){      return this.records[id] || {};   },   population:function(result){       this.records = {};       for(var i = 0; len = result.length; i< len ; i++){           var record = this.init(result[i]);           record.newRecord = false;           this.record[record.id] = record;       }   }});var User = Model.create();var user = User.init({name:'xiaojiang',age:25});user.save();console.dir(user);</script>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.