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 )