这里要讲有关类的定义、继承和实现。
官方教程:http://dojotoolkit.org/documentation/tutorials/1.7/declare/
类的声明是通过declare
这个方法来实现的。
define(['dojo/_base/declare'],function(declare){
//第一个declare,声明类my.A
  declare('my.A',null,{
       
pp1 : 1,
        pp2 : 'b',
        dd : function(a1){
           
alert(a1);
        }
    });
//第二个declare,声明类my.B,继承至my.A
   
declare('my.B',my.A,{
        pp1 : 2,
        pp3 : 'c',
        dd :
function(a1,a2){
            alert(a1 + a2);
        }
    });
//第三个declare,多父类继承
    declare('my.C',[my.A,
my.B],{
        pp1 : 3,
        pp3 : 'd'
        dd :
function(a1,a2,a3){
            alert(a1 + a2 + a3);
        }
   
});
});

以上代码为superClass.js文件的全部内容。
这里又见到了define
这个方法。
声明类需要declare 这个方法,define 通过引用
dojo/_base/declare 来引入。
declare
包含三个参数,第一个为所声明的类的名称,可忽略,当用于Dojo的parser时则必要;
第二个为父类,如果没有则为null;第三个就是类体,包括属性和方法。
在第一个declare
中,my.A 为声明的类的全名,my
为命名空间名,A为类名。
null表示它没有父类。
pp1为整型属性,pp2为字符型属性,dd为方法,它们都包含于一组{}内作为类的实体内容。
在html中对类my.A的实现和使用

require(['superClass'],
function(){
        var mm = new my.A();//实现
        mm.dd(mm.pp2);//alert
pp2的内容为'b'
        mm.pp2 = 'bbbb';//设置pp2的值
        mm.dd(mm.pp2);//alert
pp2的内容为‘bbbb’
   
});

在第二个declare中,类名为my.B,my.A作为父类,在类体中将pp1的默认值设为2,新增属性pp3,并重写了方法dd。
在html中对类my.B的实现和使用

require(['superClass'],
function(){
        var mm1 = new my.B();//实现
        mm1.dd(mm1.pp1,
mm1.pp2);//'2b'
        mm1.pp2 = 'ab';//设置pp2的值
        mm1.dd(mm1.pp2,
mm1.pp3);//'abc'
   
});

在第三个declare中,类名为my.C,继承了多个父类my.A和my.B,重置了pp1和pp3的默认值,并重写了方法dd。
多个父类的继续是父类们放在一个数组中为参数传入。
在html中对类my.C的实现和使用

require(['superClass'],
function(){
        var mm2 = new my.C();//实现
        mm2.dd(mm2.pp1,
mm2.pp2, mm2.pp3);//'3bd'
        mm2.pp2 = 'ab';//设置pp2的值
       
mm2.dd(mm2.pp1, mm2.pp2, mm1.pp3);//'3abd'
    });

dojo 三 类和继承 dojo/_base/declare的更多相关文章

  1. ES6 class类 静态方法及类的继承

    一.class类 ES6之前都是定义函数以及函数的原型对象实现类型, 如果想要实现共享构造函数成员,可以用prototype来共享实现 ES6出现之后,使用class类的概念来实现原型的继承 二,静态 ...

  2. JavaScript 面向对象的编程(三) 类的继承

    定义父类和子类的继承关系 //声明父类 function SuperClass(){ this.superValue = true; } //为父类添加共有方法 SuperClass.prototyp ...

  3. UML类图(上):类、继承和实现

    面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...

  4. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  5. (转)Java:类与继承

    原文地址: http://www.cnblogs.com/dolphin0520/p/3803432.html 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大 ...

  6. javascript面向对象系列第三篇——实现继承的3种形式

    × 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...

  7. Java编程里类的继承

    今天,我们将要讨论的内容是Java里面类的继承的相关概念. 说到继承,我相信大家都不陌生.生活中,子承父业,子女继承父母的财产,这就是继承.实际上,Java里的继承也是如此.对于一个类来说,它的数据成 ...

  8. Java:类与继承

    Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知 ...

  9. 深入理解OOP(三):多态和继承(动态绑定和运行时多态)

    在前面的文章中,我们介绍了编译期多态.params关键字.实例化.base关键字等.本节我们来关注另外一种多态:运行时多态, 运行时多态也叫迟绑定. 深入理解OOP(一):多态和继承(初期绑定和编译时 ...

随机推荐

  1. web前端网页特效大全导航列表

    CSS3和Html5 图表与图形 表单验证 导航菜单 table选项卡 视频播放器 日期和时间 返回顶部 图层代码 滚动代码 幻灯片 文字特效 图片放大镜 juqery焦点图 瀑布流 广告悬浮代码 在 ...

  2. 【BZOJ】【1211】【HNOI2004】树的计数

    Prufer序列+组合数学 嗯哼~给定每个点的度数!求树的种数!那么很自然的就想到是用prufer序列啦~(不知道prufer序列的……自己再找找资料吧,这里就不放了,可以去做一下BZOJ1005明明 ...

  3. Matlab实现movieLens转矩阵

    for mm=1:num_m %电影编号是mm的训练集行号 ff= find(train_vec(:,2)==mm); %train_vec(ff,1) 行号对应的用户编号 count(train_v ...

  4. Java内存模型(JMM)

    参考: 1. http://www.tuicool.com/articles/UVzuQb

  5. 流程控制语句和增强for循环

    import java.lang.Math; //import java.util.Arrays; public class test{ public static void main(String[ ...

  6. 利用MariaDB Galera Cluster实现mariadb的多主复制

    一.MariaDB Galera Cluster概要: .简述: MariaDB Galera Cluster 是一套在mysql innodb存储引擎上面实现multi-master及数据实时同步的 ...

  7. 再深入一点ajax

    1.建立兼容性强的XHR对象有那么复杂么? 看过一些书,书上为了写针对低版本IE和其他非IE浏览器需要写一大串兼容函数,典型的就是JS高级程序上的. 可是在现实开发中,为了兼容IE6/IE7,只需要这 ...

  8. hdu5017 Ellipsoid(旋转)

    比赛的时候跳进这个大坑里,最后代码是写出来了.看到好像很多都是模拟退火做的,下面提供一个奇怪的思路吧. ax^2+by^2+cz^2+dyz+exz+fxy=1(*) 通过一些奇特的YY我们可以知道这 ...

  9. poj 3469

    Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 18120   Accepted: 7818 ...

  10. iOS网络检测

    使用之前请从Apple网站下载示例:点此下载 Reachability 中定义了3种网络状态: typedef enum : NSInteger { NotReachable = ,//无网络 Rea ...