"类" 库添加继承

var Class = function (parent) {
    var klass = function () {
        this.init.apply(this, arguments);
    }

    if (parent) {
        /**
         *  所有的子类都共享了同一个原型
         *  避免在继承类的时候创建实例,只有实例的属性才会被继承
         *  而非类的属性,设置对象的__proto__
         * **/
        var ctor = function () {
        };
        ctor.prototype = parent.prototype;
        klass.prototype = new ctor;
    }


    klass.prototype.init = function () {

    }

    //prototype别名
    klass.fn = klass.prototype;

    //定义类的别名
    klass.fn.parent = klass;

    klass.__super__ = klass.__proto__;

    //给类添加属性
    klass.extend = function (obj) {
        var extended = obj.extended;
        for (var i in obj) {
            klass[i] = obj[i];
        }
        if (extended) extended(klass);
    }

    //给实列添加属性
    klass.include = function (obj) {
        var included = obj.included;
        for (var i in  obj) {
            klass.fn[i] = obj[i];
        }
        //触发回调
        if (included) included(klass);
    }


    return klass;
}

var Animal = new Class;

Animal.include({
    breath:function () {
        console.log("breath")
    }
})

var Cat = new Class(Animal)

var tommy = new Cat;

console.log(tommy)
 
原文地址:https://www.cnblogs.com/aaronjs/p/2654155.html