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
)

本文转自艾伦 Aaron博客园博客,原文链接:http://www.cnblogs.com/aaronjs/archive/2012/08/24/2654441.html,如需转载请自行联系原作者

给模型添加ORM,与持久化记录相关推荐

  1. Django–模型层orm查询

    文章目录 Django–模型层orm查询 一.单表查询(增.删.改.查) 基本查询 下划线查询 二.外键字段(增.删.改.查) 一对多 多对多 三.多表查询 多表查询的方式 正反向的概念 基于对象的跨 ...

  2. Django ORM 查询重复记录并显示

    文章目录 Django ORM 查询重复记录并显示 废话不谈,两横一竖开始 开始正题 下午继续vue Django ORM 查询重复记录并显示 写了简单的项目信息录入系统,让同事便于录入. 同事要求 ...

  3. 【Three.js】解决使用Three.js导入obj模型不可见问题详细记录

    问题描述: 近期在做三维重建项目,需要把最终生成的obj文件导入到web端浏览,这里使用的是three.js(另一个是babylon.js),但博主发现导入meshlab生成的obj时无法显示模型,但 ...

  4. php中添加访问器,php – 结合访问器和mutator逻辑,为模型添加自定义属性

    以下是向模型添加自定义属性的示例. $appends数组将添加这些.在使用eloquent查询表时,将调用相应的getter来设置值. 在以下代码片段中,"parent_name" ...

  5. 批量添加DNS的A记录和PTR记录

    批量添加DNS的A记录和PTR记录 搞SQL Server集群难免要搞域控制器,搞域控制器就不得不提DNS服务器,但DNS不只是为域服务,还可以作为ESX服务器所需的DNS服务器来复用,于是涉及到如何 ...

  6. IE8下JQuery clone 出的select元素使用append添加option异常解决记录

    IE8下JQuery clone 出的select元素使用append添加option异常解决记录 参考文章: (1)IE8下JQuery clone 出的select元素使用append添加opti ...

  7. python画cpk图_TensorFlow——Checkpoint为模型添加检查点的实例

    1.检查点 保存模型并不限于在训练模型后,在训练模型之中也需要保存,因为TensorFlow训练模型时难免会出现中断的情况,我们自然希望能够将训练得到的参数保存下来,否则下次又要重新训练. 这种在训练 ...

  8. 3dmax给模型添加渐变背景有哪些方法

    3dmax给模型添加渐变背景有哪些方法 3dmax软件给模型添加渐变背景有什么方法?3dmax软件模型制作完成后,渲染模型背景黑色的居多.为了让模型更加逼真,我们也可以将背景颜色改为渐变背景.那么,今 ...

  9. Unity给模型添加逼真效果材质

    一.给模型添加多维材质 1.使用maya导入模型. 2.打开Hypershade窗口 3.新建材质 4.选中材质,右键选择重命名,输入材质名. 5.在模型中选中面. 6.选中材质,点击[为当前选择指定 ...

最新文章

  1. 【BZOJ1085】【SCOI2005】骑士精神 [A*搜索]
  2. finite state machine drawer online
  3. 第一次离线写Blog,先上个图先
  4. php遍历视频文件,php使用glob函数遍历文件和目录详解
  5. P3321 [SDOI2015]序列统计(未解决)
  6. Java中complex怎么被调用_java中存在三种调用机制
  7. 牛客网暑期ACM多校训练营(第四场): B. Interval Revisited(DP)
  8. 桌面虚拟化之用户体验篇
  9. linux将字符串改大写,【已解决】makefile中把字符串转换为小写或大写
  10. K-mer频率分布图代码实现
  11. [学习]JavaScript设计模式——Revealing Module(揭示模块)模式
  12. HTML+CSS项目总结(建议学习三周后)
  13. 5个流行的开源HIDS系统介绍
  14. 类同属性不为null 拷贝赋值
  15. fcitx输入法代码分析总结
  16. The Open Group中国首届线上大会 专场三亮点解读
  17. 物理模拟与taichi编程实现
  18. 事业单位计算机操作专业技术分析面试题,事业单位面试:历年面试试题解析(四)...
  19. 使用 MsTimer2 库
  20. vue + moment.js 自己写日历

热门文章

  1. linux开发板最好芯片,既然是中国十大最有影响力的芯片之一 一定要有个好开发板...
  2. 二维 均值方差高斯分布图 python_PRML笔记 第二章 (多维)高斯分布
  3. python编程广告_为什么铺天盖地都是Python的广告?
  4. 彼聆智能语音机器人_南昌智能语音机器人作用
  5. 学php什么自考专业,什么自考专业容易过自学考试哪些专业好考(已帮助356690人)...
  6. mysql有则修改无则添加_通过sql实现无则插入有则修改(MySQL)
  7. linux简单好玩的命令,有趣的Linux命令行玩法 cal
  8. 电梯java_基于Java的电梯系统
  9. html中哪些属于块级标记,html行级标记和块级标记都有哪些?
  10. python实战经典例子_Python入门经典实例