着手开发更新的版本,把旧的版本放出来作记念。


"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 

相关文章: