简单的JS多重继承示例


Posted in Javascript onMarch 13, 2008
$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); 
Javascript 相关文章推荐
kmock javascript 单元测试代码
Feb 06 Javascript
js 数组操作之pop,push,unshift,splice,shift
Jan 29 Javascript
为jquery的ajaxfileupload增加附加参数的方法
Mar 04 Javascript
用js替换除数字与逗号以外的所有字符的代码
Jun 07 Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 Javascript
微信企业号开发之微信考勤百度地图定位
Sep 11 Javascript
js实现select下拉框菜单
Dec 08 Javascript
js实现图片无缝滚动
Dec 23 Javascript
Javascript类型系统之String字符串类型详解
Jun 21 Javascript
H5用户注册表单页 注册模态框!
Sep 17 Javascript
从零开始用electron手撸一个截屏工具的示例代码
Oct 10 Javascript
Vue数据绑定简析小结
May 07 Javascript
JMenuTab简单使用说明
Mar 13 #Javascript
JObj预览一个JS的框架
Mar 13 #Javascript
DHTML Slide Show script图片轮换
Mar 03 #Javascript
JavaScript面向对象编程
Mar 02 #Javascript
一个javascript参数的小问题
Mar 02 #Javascript
js加解密 脚本解密
Feb 22 #Javascript
JS应用之禁止抓屏、复制、打印
Feb 21 #Javascript
You might like
如何判断php数组的维度
2013/06/10 PHP
php设置允许大文件上传示例代码
2014/03/10 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
jQuery提交多个表单的小例子
2013/06/30 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
vue中的inject学习教程
2019/04/24 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
基于PyTorch中view的用法说明
2021/03/03 Python
多媒体教室标语
2014/06/26 职场文书
幼师小班个人总结
2015/02/12 职场文书
大学生村官入党自传
2015/06/26 职场文书
2019销售早会主持词
2019/06/27 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技