Newline Proliferating Maniac

    node-mini-obj

    1.3.0 • Public • Published

    node-mini-obj

    npm version

    Install

    npm install --save node-mini-obj
    

    history

    • v1.3.0 之前版本的extend会污染this对象,已重构
    • v1.2.6(todo) 使用mocha重构test
    • v1.2.5 修改代码内版本号和作者,以及dist

    第一版

    源码

    module.exports = global.Class = function(name, src) { 
        src.constructor.prototype = src; 
        global[name] = src.constructor; 
    }; 
    

    用法

    var $ = require('./index')
    
    $('Person',{
        constructor: function(name) { 
            this.name = name;
        }, 
        say: function(){
            console.log('hello ' + this.name);
        }
    })
    
    var p = new Person('alfred sang');
    p.say();
    

    还是蛮舒服的吧?

    第二版

    这个版本主要增加了继承功能,具体用法如下

    基本用法

    没有构造函数的情况

    $('Person1',{
        say: function(){
            console.log('hello ' + this.name);
        }
    })
    
    var p1 = new Person1();
    p1.name = 'i5ting'
    console.log(p1);
    p1.say();
    

    有构造函数的情况

    var $ = require('./index')
    
    $('Person',{
        constructor: function(name) { 
            this.name = name;
        }, 
        say: function(){
            console.log('hello ' + this.name);
        }
    })
    
    var p = new Person('alfred sang');
    p.say();
    

    测试1:plain object继承

    var $ = require('./index')
    
    $('Person',{
        constructor: function(name) { 
            console.log('---1----');
            this.name = name;
        }, 
        bbb:'bbb',
        hello:function(){
            console.log('hello');
        }
    },
    {
        constructor: function(name) { 
            console.log('---2----');
            this.name = name;
        
        }, 
        say: function(){
            console.log('hello ' + this.name);
            console.log(this.bbb);
        }
    })
    
    var p = new Person('alfred sang');
    p.hello()
    p.say();
    

    测试2:使用已有对象完成继承

    var $ = require('./index')
    
    $('Base',{
        constructor: function(name) { 
            this.name = name;
        },
        hello:function(){
            console.log('hello');
        }
    })
    
    var base = new Base('a person');
    
    $('Person',base,{
        constructor: function(name) { 
            this.name = name;
        }, 
        say: function(){
            console.log('hello ' + this.name);
            this.hello();
        }
    })
    
    var p = new Person('alfred sang');
    p.say();
    p.hello();
    

    测试3:使用继承对象的原型方法

    var $ = require('./index')
    
    var Base = function(name){
        this.name = name;
    }
    
    Base.prototype.hello = function(){
        console.log('---Base.prototype.hello----');
    }
    
    var base = new Base('a person');
    
    $('Person',base,{
        constructor: function(name) { 
            this.name = name;
        }, 
        say: function(){
            console.log('hello ' + this.name);
            this.hello();
        }
    })
    
    var p = new Person('alfred sang');
    p.say();
    

    Test

    npm test
    

    or

    node test
    

    结果

    ➜  node-mini-obj git:(master) ✗ npm test
    
    > node-mini-obj@1.0.0 test /Users/sang/workspace/github/node-mini-obj
    > node test
    
    hello alfred sang
    

    TODO

    • 使用init作为构造函数
    • 使用this._super调用父类方法
    • 完善的继承链

    Building

    If you need to use this module outside a CommonJS environment, you can build a standalone UMD module as follows:

    
    npm install -g uglify-js
    npm install -g browserify
    
    $ browserify index.js --standalone Espresso | uglifyjs > node-mini-obj.min.js
    

    Install

    npm i node-mini-obj

    DownloadsWeekly Downloads

    1

    Version

    1.3.0

    License

    ISC

    Last publish

    Collaborators

    • zhaoxingyue
    • zhangyuang
    • langshu