oop.js
3581 단어 oop
/**
* .
*
* @author bisoft
* @version 1.0 2013-07-23
*/
(function(global) {
//
var override = function(s, t) {
var i;
for(i in t) {
s[i] = t[i];
}
};
//
var extend = function(subclass, supclass, options) {
if (subclass.prototype !== Object.prototype) {
var Root0 = function() {};
Root0.prototype = supclass.prototype;
var sbp = subclass.prototype = new Root0();
sbp.constructor = subclass;
if (options) {
override(sbp, options);
}
}
};
//
var define = function(subClassName, options) {
var supClassName = options['extend'] || 'Object';
var supclass = get(supClassName);
var subclass = options['constructor'];
// ,
extend(subclass, supclass, options);
override(subclass.prototype, {
'$className' : subClassName,
'$class' : subclass,
'$supClassName' : supClassName,
'$superClass' : supclass
});
register(subClassName, subclass);
var pkg = subClassName.indexOf('.') != -1 ? subClassName.split('.').slice(0, -1) : [];
var shortClassName = subClassName.indexOf('.') != -1 ? subClassName.split('.').slice(-1) : subClassName;
var ns = namespace(pkg);
ns[shortClassName] = subclass;
return subclass;
};
//
var create = function(className, options) {
var cls = get(className);
var o = new cls();
//
cls.prototype.$superClass.call(o, options);
//
if (options) {
override(o, options);
}
return o;
};
var cache = {
'Object' : Object
};
var register = function(name, value) {
cache[name] = value;
};
var get = function(name) {
return cache[name];
};
var namespace = function(name) {
var namespaces = name.indexOf('.') != -1 ? name.split('.') : name;
var i = 0;
var pNamespace = global;
for(i in namespaces) {
var ns = namespaces[i];
if (pNamespace[ns] === undefined) {
pNamespace[ns] = {};
}
pNamespace = pNamespace[ns];
}
return pNamespace;
};
global.oop = (function() {
return {
define : define,
create : create
};
})();
})(window);
oop.define('wldm.app.Controller', {
constructor: function() {
}
});
oop.define('wldm.app.Application', {
extend : 'wldm.app.Controller',
constructor: function() {
}
});
var controller = oop.create('wldm.app.Controller');
var application = oop.create('wldm.app.Application');
console.log(controller instanceof wldm.app.Controller); // true
console.log(controller instanceof wldm.app.Application); // false
console.log(controller instanceof Object); // true
console.log(application instanceof wldm.app.Controller); // true
console.log(application instanceof wldm.app.Application); // true
console.log(application instanceof Object); // true
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
핸들러 - 작은 구현이 좋은 이유는 무엇입니까?핸들러는 단순히 입력을 받아들이고, 가능한 경우 수신된 입력 데이터로 진행할지 선택적으로 결정하고, 입력을 적절한 형식으로 변환하고, 기본 프로시저를 호출합니다. 사용자/클라이언트는 사용자 인터페이스나 REST, 메...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.