MVC中简单数据模型(M): Model类

简介: MVC中简单数据模型(M): Model类

读书笔记:

基于mvc的javascript web富媒体应用开发,

模型和数据

Model类

 

//新建类的函数Object.create,ECMAScript5已经实现
if(typeof Object.create !== 'function'){
 Object.create = function(o){
  function F(){};
  F.prototype = o;
  return new F();
 };
}
//模型
var Model = {
 inherited: function(){},
 created: function(){},
 prototype:{//用于模型实例继承用
  init: function(a){
   console.log(22);
   this.name = 'Model.name'
  }
 },
//创建模型
 create: function(){
  var o = Object.create(this);
  o.parent = this;
  o.prototype = o.fn = Object.create(this.prototype);//Model.prototype.init
  o.created();
  this.inherited();
  return o;
 },
//创建模型实例
 init: function(){
  //console.log(this);
  //console.log(this.prototype);//Model.prototype.init
  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) includeed(this);
 }
};
//扩展模型find方法
Model.extend({
 find: function(){}
});
//扩展模型实例init方法,会覆盖Model.prototype.init方法
//并扩展load方法
Model.include({
 init: function(attr){
  if(attr) this.load(attr);
 },
 load: function(attributes){
  for(var name in attributes){
   this[name] = attributes[name];
  }
 }
});
//扩展模型属性
Model.records = {};
//扩展模型实例: create,destroy方法及newRecord属性
Model.include({
 newRecord: true,
 create: function(){
  this.newRecord = false;
  this.parent.records[this.id] = this;
 },
 destroy: function(){
  delete this.parent.records[this.id];
 }
});
//扩展模型实例: update方法
Model.include({
 update: function(){
  this.parent.records[this.id] = this;
 }
});
//扩展模型实例: save方法用以实现兼容更新与创建
Model.include({
 save: function(){
  this.newRecord ? this.create() : this.update();
 }
});
//扩展模型方法用于查找记录
Model.extend({
 find: function(id){
  return this.records[id] || 'Unkonw record';
 }
});

使用数据模型创建,保存,查找

var Asset = Model.create();//创建模模型
var asset = Asset.init();//创建数据模型实例1
asset.name = "same, same";
asset.id = 1;
asset.save();
var asset2 = Asset.init();//创建数据模型实例2
asset2.name = "but different";
asset2.id = 2;
asset2.save();
asset2.destroy();
console.log(Asset.find(2));
相关文章
|
前端开发 Java API
Spring MVC相关异常类
Spring MVC相关异常类
63 0
|
5月前
ssm(Spring+Spring mvc+mybatis)Service层实现类——DeptServiceImpl
ssm(Spring+Spring mvc+mybatis)Service层实现类——DeptServiceImpl
|
5月前
ssm(Spring+Spring mvc+mybatis)Dao层实现类——DeptDaoImpl
ssm(Spring+Spring mvc+mybatis)Dao层实现类——DeptDaoImpl
|
5月前
|
缓存 前端开发 Java
【Spring底层原理高级进阶】轻松掌握 Spring MVC 的拦截器机制:深入理解 HandlerInterceptor 接口和其实现类的用法
【Spring底层原理高级进阶】轻松掌握 Spring MVC 的拦截器机制:深入理解 HandlerInterceptor 接口和其实现类的用法
|
JSON 前端开发 Java
30个类手写Spring核心原理之MVC映射功能(4)
接下来我们来完成MVC模块的功能,应该不需要再做说明。Spring MVC的入口就是从DispatcherServlet开始的,而前面的章节中已完成了web.xml的基础配置。下面就从DispatcherServlet开始添砖加瓦。
48 0
|
XML NoSQL Java
干掉 CRUD!这个API开发神器效率爆炸,无需定义MVC类!!
magic-api 能够只通过 UI 界面就能完成简单常用的接口开发,能够支持市面上多数的关系性数据库,甚至还支持非关系性数据库 MongoDB。 通过 magic-api 提供的 UI 界面完成接口的开发,自动映射为 HTTP 接口,无需定义 Controller、Service、Dao、Mapper、XML、VO 等 Java 对象和相关文件! 该项目已经有上千家公司使用,上万名开发者使用,并有上百名程序员提交建议,20+ 贡献者,是非常值得信赖的项目!
|
设计模式 前端开发 安全
Spring MVC-01循序渐进之Model 2和MVC
Spring MVC-01循序渐进之Model 2和MVC
58 0
|
前端开发 Java 索引
Spring MVC Controller 方法参数 Map 的实现类是什么?
问题 题主问题描述如下: 在SpringBoot中,Controller的参数中有Map接口类型的,请问他的实现类是什么? 突发奇想,在SpringBoot中,Controller的参数中有Map接口类型的
400 0
Spring MVC Controller 方法参数 Map 的实现类是什么?
|
前端开发 Java API
Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
280 0
|
前端开发 JavaScript 数据处理
mvc深刻理解,logic,service,model层的作用
mvc深刻理解,logic,service,model层的作用
378 0