简单的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 相关文章推荐
JS下高效拼装字符串的几种方法比较与测试代码
Apr 15 Javascript
在jQuery ajax中按钮button和submit的区别分析
Oct 07 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
Mar 12 Javascript
JavaScript中数组的合并以及排序实现示例
Oct 24 Javascript
极易被忽视的javascript面试题七问七答
Feb 15 Javascript
jQuery实现的倒计时效果实例小结
Apr 16 Javascript
js中使用使用原型(prototype)定义方法的好处详解
Jul 04 Javascript
JS中BOM相关知识点总结(必看篇)
Nov 22 Javascript
Bootstrap 填充Json数据的实例代码
Jan 11 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
Sep 13 Javascript
基于vue实现一个禅道主页拖拽效果
May 27 Javascript
javascript实现点击小图显示大图
Nov 29 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程序员应该了解MongoDB的五件事
2013/06/03 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
PHP会话处理的10个函数
2015/08/11 PHP
PHP内核探索之变量
2015/12/22 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
koa-router源码学习小结
2018/09/07 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
百度吧主申请感言
2014/01/12 职场文书
企业党员公开承诺书
2014/03/26 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
个人先进事迹总结
2015/02/26 职场文书
小学数学国培研修日志
2015/11/13 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
Python作用域和名称空间的详细介绍
2022/04/13 Python