"类" 库添加继承

简介:
复制代码
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)
复制代码
 

本文转自艾伦 Aaron博客园博客,原文链接:http://www.cnblogs.com/aaronjs/archive/2012/08/24/2654155.html,如需转载请自行联系原作者
相关文章
|
4月前
|
设计模式 JavaScript 前端开发
在JavaScript中,继承是一个重要的概念,它允许我们基于现有的类(或构造函数)创建新的类
【6月更文挑战第15天】JavaScript继承促进代码复用与扩展,创建类层次结构,但过深的继承链导致复杂性增加,紧密耦合增加维护成本,单继承限制灵活性,方法覆盖可能隐藏父类功能,且可能影响性能。设计时需谨慎权衡并考虑使用组合等替代方案。
45 7
|
29天前
类与ES6类之间的继承
类与ES6类之间的继承
|
2月前
|
C#
C#中的类和继承
C#中的类和继承
36 6
|
5月前
|
存储 容器
Qt中 QMap 类、QHash 类、QVector 类详解
Qt中 QMap 类、QHash 类、QVector 类详解
Qt中 QMap 类、QHash 类、QVector 类详解
|
5月前
|
C++ 存储 容器
Qt QList类和QLinkedList类 详解
Qt QList类和QLinkedList类 详解
|
10月前
获取某包下的类
获取某包下的类
50 0
继承类的方法
继承类的方法
108 0
|
安全 Java 数据安全/隐私保护
|
存储 iOS开发 开发者
NSBundle类
NSBundle类
179 0
NSBundle类
|
Java 数据挖掘 C++