Fork me on GitHub
随笔 - 265  文章 - 0  评论 - 1075  阅读 - 230万

"类" 库添加继承

复制代码
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)
复制代码
 
posted on   【艾伦】  阅读(444)  评论(0编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络
< 2012年8月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示