dojo 三 类和继承 dojo/_base/declare
这里要讲有关类的定义、继承和实现。
官方教程: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的更多相关文章
- ES6 class类 静态方法及类的继承
一.class类 ES6之前都是定义函数以及函数的原型对象实现类型, 如果想要实现共享构造函数成员,可以用prototype来共享实现 ES6出现之后,使用class类的概念来实现原型的继承 二,静态 ...
- JavaScript 面向对象的编程(三) 类的继承
定义父类和子类的继承关系 //声明父类 function SuperClass(){ this.superValue = true; } //为父类添加共有方法 SuperClass.prototyp ...
- UML类图(上):类、继承和实现
面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- (转)Java:类与继承
原文地址: http://www.cnblogs.com/dolphin0520/p/3803432.html 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大 ...
- javascript面向对象系列第三篇——实现继承的3种形式
× 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...
- Java编程里类的继承
今天,我们将要讨论的内容是Java里面类的继承的相关概念. 说到继承,我相信大家都不陌生.生活中,子承父业,子女继承父母的财产,这就是继承.实际上,Java里的继承也是如此.对于一个类来说,它的数据成 ...
- Java:类与继承
Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知 ...
- 深入理解OOP(三):多态和继承(动态绑定和运行时多态)
在前面的文章中,我们介绍了编译期多态.params关键字.实例化.base关键字等.本节我们来关注另外一种多态:运行时多态, 运行时多态也叫迟绑定. 深入理解OOP(一):多态和继承(初期绑定和编译时 ...
随机推荐
- shell grep 高亮
grep "socket" a --color=auto
- git学习,什么是git?
什么是 Git? 百度百科显示,Git是 Linux 之父 Linus Trovalds,为管理 Linux 内核代码而建立的,被认为是分布式版本控制工具中的顶级水准.智能.友好.强健.高效. 正如所 ...
- Visual Studio快捷键设置
1.查看当前快捷键:环境-键盘-按快捷键2.文本编辑器-C#-显示-行号3.文本编辑器-C#-制表符-插入空格4.文本编辑器-所有语言-没有选定内容时对空行应用剪切或复制命令5.Ctrl+Shift- ...
- ios containerViewController
- (void)replaceViewController:(UIViewController *)existingViewController withViewController:(UIViewC ...
- [haoi2009]毛毛虫 树形dp
这道题细节处理不少,但要AC不难: 设以i节点为根节点的子树能形成的最大的毛毛虫长度为f[i],则f[i]=max(f[j])+i节点的孩子数: 答案需要f最大和次大的两个子树合并,而且若合并的位置不 ...
- Slim - 超轻量级PHP Restful API构建框架
下载源码包: http://www.slimframework.com/ 基于Slim的Restful API Sample: <?php require '/darjuan/Slim/Slim ...
- java输出流实现文件下载
//导出Excel try { HSSFWorkbook wb = carService.export(list); //调用service方法~! response.setContentType(& ...
- Docker初识
<Docker--从入门到实践>是Docker技术的入门教程,学习时长两天,现整理关键点如下: 1. 什么是Docker? 轻量级操作系统虚拟化解决方案:Go语言实现:下图很好地说明了Do ...
- 在 Java EE 组件中使用 Camel Routes
摘要:你可以通过集成 Camel 和 WildFly 应用服务器(使用 WildFly-Camel 子系统)在 Java EE 组件中开始使用 Apache Camel Routes. [编者按]作者 ...
- C#&Java重学笔记(集合比较和转换)
C#部分: 1.C#中集合有三种,数组类,ArrayList,和字典键值对类,一般也可以自定义集合,但是自定义集合的类型也只有这三类. 2.自定义集合实现三类集合的方法:前两者需要继承Collecti ...