简单的JS多重继承示例

代码如下:

$defined = function (v) {
    return v != undefined;
}

Class = function () {
    var base = {};
    for (var k=0; k<arguments.length; k++) {
    //{{new arguments[k]() with custom constructor field.
        var o = arguments[k].prototype;
        o.constructor = arguments[k];
        arguments[k].call(o);
    //}}
        for (key in o) base[key] = o[key];
    }
    function Klass () {
        // for every class one object cache.
        var clso = null;
        function klass() {
            if (arguments.length<=0 && clso!=null) {
                // hit cache.
                return clso;
            }
            if ($defined(this.constructor.init)) {
                // use init() for class initialization.
                this.constructor.init.apply(this, arguments);
            }
            clso = this;
        }
        klass.prototype = base;
        return klass;
    }
    return Klass();
}

A = new Class();
A.init = function () {
    this.x = 400;
    this.y = 300;
}
B = new Class(A);
B.init = function () {
    this.y = 200;
    this.z = 100;
}
C = new Class(B);
C.init = function () {
    this.z = 0;
}
c = new C();
alert(c.x);
alert(c.y);
alert(c.z);

(0)

相关推荐

  • 简单的JS多重继承示例

    复制代码 代码如下: $defined = function (v) {     return v != undefined; } Class = function () {     var base = {};     for (var k=0; k<arguments.length; k++) {     //{{new arguments[k]() with custom constructor field.         var o = arguments[k].prototype;

  • 原生js实现简单的模态框示例

    html部分: <img src="images/8.jpg" alt=""> <button class="btn" id="showMax">显示大图</button> <div id="modalBox" class="modalBox"> <div class="modalBox-matter"> &

  • js实现一个简单的MVVM框架示例

    以前都是默默地看园子里的文章,猥琐的点赞,今天也分享一下自己用js实现的一个简单mvvm框架. 最初只做了自动绑定事件,后面又参考学习了vue,knouckout以及argular实现方式,以及结合自己做WPF的一些经验,增加了属性绑定,今天又稍微整理了下,完善了部分功能,把代码提交到了码云:https://gitee.com/zlj_fy/Simple-MVVM 先简单介绍下用法: <form class="form-horizontal" role="form&qu

  • Node.js 利用cheerio制作简单的网页爬虫示例

    本文介绍了Node.js 利用cheerio制作简单的网页爬虫示例,分享给大家,具有如下: 1. 目标 完成对网站的标题信息获取 将获取到的信息输出在一个新文件 工具: cheerio,使用npm下载npm install cheerio cheerio的API使用方法和jQuery的使用方法基本一致 如果熟练使用jQuery,那么cheerio将会很快上手 2. 代码部分 介绍: 获取segment fault页面的列表标题,将获取到的标题列表编号,最终输出到pageTitle.txt文件里

  • JS实现简单的下雪特效示例详解

    目录 前言 主要实现代码 HTML代码 JS代码 前言 很多南方的小伙伴可能没怎么见过或者从来没见过下雪,今天我给大家带来一个小Demo,模拟了下雪场景,首先让我们看一下运行效果 可以点击看看在线运行http://haiyong.site/xiaxue 首先看看项目结构,一张雪花图片,一个.html文件和 jquery-1.4.2.js 用到的雪花图片我放在这里了,或者可以直接用我上传到自己网站上的图片地址:http://haiyong.site/wp-content/uploads/2021/

  • JS实现简单的操作杆旋转示例详解

    目录 一.实现效果 二.组成部分 目标 三.代码实现 1.操作控制 2.dom对象操作类 3.用法 总结与思考 一.实现效果 JS 简单的操作杆旋转实现 首先说明一下,请直接忽略背景图,这里主要实现的是杆旋转控制方向盘旋转. 鼠标移出控制区域,控制球复位 二.组成部分 创建 ballOption.js 文件,用以绑定控制球指定 dom,并初始化相关操作 创建 eleOption.js 文件,用以实现一些频繁的 dom 操作 主要是通过鼠标滑动事件控制“控制球”位置更改及获取以屏幕上方向为0度的角

  • SpringMVC简单整合Angular2的示例

    本文介绍了SpringMVC简单整合Angular2的示例,分享给大家,具体如下: angular使用的是官方的快速开始的例子 将文件全部拷贝到springmvc的项目中,拷贝过程中可能出现文件路径太长而失败,那就先对整个文件压缩,然后拷贝压缩过后的文件,然后解压缩即可.目录结构如下,我是拷贝到angular目录下的 spring配置文件设置路径 然后再html页面中如angular官方所示,引入文件 这里面需要对这些文件的路径进行配置 主要是systemjs.config文件中需要修改两个地方

  • 简单了解JS打开url的方法

    这篇文章主要介绍了简单了解JS打开url的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在新标签页中get方式打开url window.open(loginurl_withaccout, "_blank"); 下面根据后台返回的url以及用户名密码字段,以及用户名密码动态生成了带账号的url. $.ax('./front/getURLBySidAndUid', {sysid:sysid}, 'POST', function(d)

  • 15个简单的JS编码标准让你的代码更整洁(小结)

    作者 | Daniel Anderson 本文最初发布于 Medium 网站,经原作者授权后翻译和分享. 编码标准可以帮助以下方面: 保持代码一致 易于阅读和理解 易于维护 下面的编码标准是我对上述几点有帮助的看法. 1. 比较时使用 === 代替 == 这很重要,因为JavaScript是一种动态语言,因此使用==可能会给您带来意想不到的结果,因为它允许类型不同. Fail: if (val == 2) Pass: if (val === 2) 2. 永远不要使用 var,使用 let 来代替

  • 小程序实现简单语音聊天的示例代码

    框架相关 Demo采用Mpvue框架,后端的WebSocket采用Node.js,文件服务器直接使用的微信小程序的云开发的存储. 储备知识 微信小程序录音控制器:recorderManager. 微信小程序音频控制器:innerAudioContext. 微信小程序WebSocket. Node.js端WebScoket实现 // 基于WS插件 // 引入ws插件 var WebSocketServer = require("ws").Server; // 实例化WebSocket v

随机推荐