자체 제작 MVC의 M
9214 단어 mvc
/**
* @ description Model MVC M
* @ Object
* @ public
* @ create method IE
*/
if(typeof Object.create !== 'function'){
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'})
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
클린 아키텍처의 Presenter를 이해하기 어려운 것은 MVC 2가 아니기 때문에클린 아키텍처에는 구체적인 클래스 구성 예를 보여주는 다음 그림이 있습니다. 이 그림 중에서 Presenter와 Output Boundary(Presenter의 인터페이스)만 구체 구현을 이미지하는 것이 매우 어렵다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.