简单的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 相关文章推荐
Javascript实现的分页函数
Dec 22 Javascript
wap浏览自动跳转到wap页面的js代码
May 17 Javascript
JS拖拽插件实现步骤
Aug 03 Javascript
jQuery+HTML5实现图片上传前预览效果
Aug 20 Javascript
浅谈jQuery添加的HTML,JS失效的问题
Oct 05 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
Oct 21 Javascript
微信小程序页面传值实例分析
Apr 19 Javascript
JavaScript简单拖拽效果(1)
May 17 Javascript
JavaScript变速动画函数封装添加任意多个属性
Apr 03 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
Sep 06 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
浅析Vue下的components模板使用及应用
Nov 27 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
杏林同学录(六)
2006/10/09 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
js实现交通灯效果
2017/01/13 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
初学Python实用技巧两则
2014/08/29 Python
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
django和vue实现数据交互的方法
2019/08/21 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
pandas参数设置的实用小技巧
2020/08/23 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
三个Unix的命令面试题
2015/04/12 面试题
司马光教学反思
2014/02/01 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL