mass Framework class 모듈 v11
4023 단어 framework
//=========================================
// v11 by
//==========================================
define("class", ["$lang"], function( $ ){
var
unextend = $.oneObject(["_super","prototype", 'extend', 'implement' ]),
rconst = /constructor|_init|_super/,
classOne = $.oneObject('Object,Array,Function');
function expand(klass,props){
'extend,implement'.replace( $.rword, function(name){
var modules = props[name];
if( classOne[ $.type( modules) ] ){
klass[name].apply( klass,[].concat( modules ) );
delete props[name];
}
});
return klass;
}
var hash = {
inherit : function( parent,init ) {
var bridge = function() { }
if( typeof parent == "function"){
for(var i in parent){//
this[i] = parent[i];
}
bridge.prototype = parent.prototype;
this.prototype = new bridge ;//
this._super = parent;//
if(!this._init){
this._init = [parent]
}
}
this._init = (this._init || []).concat();
if( init ){
this._init.push(init);
}
this.toString = function(){
return (init || bridge) + ""
}
var proto = this.prototype;
proto.setOptions = function(){
var first = arguments[0];
if( typeof first === "string" ){
first = this[first] || (this[first] = {});
[].splice.call( arguments, 0, 1, first );
}else{
[].unshift.call( arguments,this );
}
$.Object.merge.apply(null,arguments);
return this;
}
return proto.constructor = this;
},
implement:function(){
var target = this.prototype, reg = rconst;
for(var i = 0, module; module = arguments[i++]; ){
module = typeof module === "function" ? new module :module;
Object.keys(module).forEach(function(name){
if( !reg.test(name) ){
target[name] = module[name];
}
}, this );
}
return this;
},
extend: function(){//
var bridge = {}
for(var i = 0, module; module = arguments[i++]; ){
$.mix( bridge, module );
}
for( var key in bridge ){
if( !unextend[key] ){
this[key] = bridge[key]
}
}
return this;
}
};
$.factory = function( obj ){
obj = obj || {};
var parent = obj.inherit //
var init = obj.init ; //
delete obj.inherit;
delete obj.init;
var klass = function () {
for( var i = 0 , init ; init = klass._init[i++]; ){
init.apply(this, arguments);
}
};
$.mix( klass, hash ).inherit( parent, init );//
return expand( klass, obj ).implement( obj );
}
$.mix($.factory, hash)
return $
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fragmenta의 각서라고 할까, 그것 밖에 발견되지 않았기 때문에 시도해보기로 했습니다. 다만, 내용을 보면 어플리케이션을 만드는 프레임워크로서 사용되는 것도 의식하고 있는 것 같습니다. 하지만, 지금은 정확하지 않은 것 같기 때문에,...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.