mass Framework oop 모듈 v3
5234 단어 framework
"use strict";
(function(global,DOC){
var dom = global[DOC.URL.split("#")[0]];
dom.define("oop", ["lang"],function(){
//=========================================
//
//==========================================
var PROTO = "prototype", CTOR = "constructor";
var arr_extend = [PROTO, 'extend', 'include','inherit','ancestors','parent'];
var arr_include = [CTOR];
var one_object = dom.oneObject(['Object',"Array"]);
function add_modules(klass,props){
'extend,include'.replace(/\w+/g, function(name){
var modules = props[name];
if(one_object[dom.type(modules)]){
klass[name].apply(klass,[].concat(modules));
delete props[name];
}
});
}
function clean_module(module,props){
for(var name in props){
delete module[name]
}
return module;
}
var class_methods = {
inherit : function(parent) {
if (parent && parent[PROTO]) {
this[PROTO] = Object.create(parent[PROTO]);//
this.parent = parent;
}
this.ancestors = [];
while (parent) {// ,
this.ancestors.push(parent);
parent = parent.parent;
}
return this[PROTO][CTOR] = this;
},
extend: function(){//
for(var i = 0, n = arguments.length; i < n ; i++){
if(dom.type(arguments[i],"Object")){
dom.mix(this, clean_module(arguments[i],arr_extend))
}
}
return this;
},
include:function(){//
var parents = [this].concat(this.ancestors), target = this[PROTO],modules = [], module;
for(var i = 0, n = arguments.length; i < n ; i++){
module = arguments[i];
if(dom.type(module,"Object")){
modules.push(module);
}else if(typeof module === "function"){
modules.push(new module);
}
}
dom.lang(modules).forEach(function(module){
dom.lang( clean_module(module,arr_include)).forEach(function(method,name){
var i = 0,parent,super_method;
while((parent = parents[i++])){
if (parent[PROTO] && name in parent[PROTO]) {
super_method = parent[PROTO][name];
break;
}
}
if( typeof method === "function" && typeof super_method === "function" ){
target[name] = function() {
this.$super = super_method;
return method.apply(this, arguments);
}
target[name].toString = dom.K(method + "");
}else{
target[name] = method;
}
});
});
return this;
}
};
dom.oop = function(obj){
obj = obj || {};
var superclass = obj.inherit || {}; //
delete obj.inherit;
obj.nonew = !!obj.nonew;// new
var klass = function() {
var that = this;
if(!(that instanceof klass)){
if(typeof obj.unnew === "function"){
return obj.unnew.apply(klass,arguments);
}
if(obj.nonew){
that = new klass;
return that.init && that.init.apply(that,arguments);
}
}
return that.init && that.init.apply(that,arguments);
};
dom.mix(klass,class_methods).inherit(superclass).extend(superclass);
add_modules(klass,obj);
klass.toString = dom.K(obj.init+"");
return klass.include(obj);
}
dom.alias();
});
})(this,this.document);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fragmenta의 각서라고 할까, 그것 밖에 발견되지 않았기 때문에 시도해보기로 했습니다. 다만, 내용을 보면 어플리케이션을 만드는 프레임워크로서 사용되는 것도 의식하고 있는 것 같습니다. 하지만, 지금은 정확하지 않은 것 같기 때문에,...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.