`
j2ee_zhongqi
  • 浏览: 208933 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Dojo 中定义和继承class

    博客分类:
  • Dojo
阅读更多
面向对象,定义Class
dojo里如何定义Class:
dojo.declare("Customer",null,{
    constructor:function(name){
        this.name = name;
    },
    say:function(){
        alert("Hello " + this.name);
    },
    getDiscount:function(){
        alert("Discount is 1.0");
    }
});

var customer1 = new Customer("Mark");
customer1.say();
 

如何继承
dojo.declare("VIP",Customer,{
    getDiscount:function(){
        alert("Discount is 0.8");
    }
});
var vip = new VIP("Mark");
vip.say();
vip.getDiscount();

使用this.inherited方法调用父类
dojo.declare("VIP",Customer,{
    getDiscount:function(){
        this.inherited(arguments);
        //this.inherited("getDiscount",arguments);
    }
});

多继承,mixin
  说到继承,多继承的问题又来了。dojo支持多继承,准确地说,是mixin。还记得dojo.declare的第二个参数吗,就是表示父类的那个参数,这个参数可以是一个数组,数组的第一个元素作为声明的类的父类,其他的作为mixin。子类自动获得父类和mixin的所有方法,后面的mixin的同名方法覆盖前面的方法。
dojo.declare("Customer",null,{
    say:function(){
        alert("Hello Customer");
    },
    getDiscount:function(){
        alert("Discount in Customer");
    }
});

dojo.declare("MixinClass",null,{
    say:function(){
        alert("Hello mixin");
    },
    foo:function(){
        alert("foo in MixinClass");
    }
});
dojo.declare("VIP",[Customer,MixinClass],{
});
var vip = new VIP();
vip.getDiscount();
vip.foo();
vip.say();//输出"Hello MixinClass"

其他的比较有用的函数就是dojo.mixin和dojo.extend了,顾名思义,一个是作用于对象实例,一个是用于扩展class
R:http://hi.baidu.com/javajavajava/blog/item/4e8f4bcf8f62cb3bf9dc613a.html

分享到:
评论

相关推荐

    定义自己的dojo组件类

    在 Dojo 框架中,开发人员可以通过定义自己的组件类来扩展和定制现有功能,以满足特定需求。本文档将介绍如何定义和使用自定义的 Dojo widget。 ### 1. 模板 模板是 Dojo 组件的基础,它定义了组件在页面上的结构和...

    dojo_class

    Dojo支持ES6的类语法,同时也提供了一套自己的"class"机制,如dojo.declare,它允许在非ES6环境中实现类似类的继承和封装。 在Dojo中,你可以创建类并定义它们的方法和属性,然后实例化这些类以创建对象。例如,...

    dojo create custome widget

    这个类通常会继承Dojo的内置Widget基类,如`dijit._WidgetBase`和`dijit._TemplatedMixin`,以获取基本的Widget功能和模板支持。 3. **定义属性(Attributes)**:在Widget类中定义属性,这些属性可以在实例化时...

    coding_dojo_python_oop:编码Dojo Python OOP

    在编程世界中,"Coding Dojo"是一种集体学习和练习编程技能的方式,通常涉及解决特定问题或挑战。在这个"coding_dojo_python_oop"项目中,重点是使用Python语言进行面向对象编程(OOP)。面向对象编程是软件开发中一...

    javascript写类方式之七

    文件`dojo.js`可能引用了Dojo工具库,Dojo提供了一套完整的JavaScript模块系统和类定义机制。在Dojo中,我们可以使用`dojo.declare`来创建类。 ```javascript dojo.declare("Person", null, { constructor: ...

    dojo-testing:探索使用 Swift 进行测试的方法

    在`dojo-testing-master`项目中,可能包含了不同类型的测试示例,比如集成测试、性能测试和模拟对象的使用。集成测试用于验证不同组件之间的交互,而性能测试则关注代码的运行时间和资源消耗。在Swift中,可以使用`...

    struts2 核心的5个包 例子包

    它包含了一些预定义的插件和标签,方便在视图层使用Dojo组件。 4. `struts2-json-plugin`包:该包支持JSON(JavaScript Object Notation)数据格式的处理,使得Struts2可以方便地与JSON API进行交互,这对于现代Web...

    Struts2 入门配置小实例

    Struts2提供了丰富的插件,如 strut2-dojo-plugin 和 strut2-convention-plugin,分别用于支持Dojo库和自动配置Action。这使得Struts2能够轻松集成第三方库,提高开发效率。 8. **Action配置示例**: ```xml ...

    struts2的timepicker

    总的来说,Struts2的datetimepicker标签结合Dojo库提供了直观的日期和时间选择功能,使得开发者可以轻松地在Web应用中集成这一功能,提高了用户交互的便利性。通过正确配置Action和使用datetimepicker标签,开发者...

    struts2入门配置手把手教

    在`struts.xml`中,可以使用`<interceptors>`和`<default-interceptor-ref>`来定义全局拦截器和Action级别的拦截器。 5. **结果类型**:结果类型决定了Action执行完成后如何跳转。默认的结果类型是`dispatcher`,它...

    struts2从零开始(五)

    Struts2是一个轻量级、可扩展的MVC框架,它继承了Struts1的优点并解决了其不足,如性能问题和复杂性。在Struts2中,Action类是业务逻辑的载体,而配置文件(通常为struts.xml)用于定义Action与URL之间的映射关系,...

    JavaEE struts2综合小案例

    Action类通常继承自`ActionSupport`类,该类提供了默认的错误处理和国际化支持。 在Struts2中,`配置文件`(struts.xml)扮演着关键角色,它定义了Action类、结果类型、拦截器链等。配置文件告诉Struts2如何路由...

    Struts2的配置

    5. **包配置**:包是一种组织Action、拦截器和结果的方式,可以继承和覆盖父包的配置。包的配置允许你定义默认的Action类、拦截器栈和结果类型。例如: ```xml ``` 这里创建了一个名为"base"的包,继承了...

    my-coding-dojo:我做过的一些编码练习

    4. **原型与继承**:原型链、__proto__、prototype、构造函数、Object.create()、类(ES6 Class)。 5. **异步编程**:回调函数、Promise、async/await(ES6异步操作)。 6. **DOM操作**:选择元素...

    struts2学习笔记二(第2讲.Struts2入门与配置续)

    6. **包配置**:通过包的概念组织Action和相关配置,可以继承和覆盖父包的配置。 在深入学习Struts2的过程中,理解并掌握上述知识点至关重要。同时,阅读源码可以帮助我们更好地理解框架的工作原理,提升开发效率和...

    SSH笔记_Struts2配置

    SSH是Java Web开发中的三大框架组合,分别是Spring、Struts2和Hibernate。Spring提供了依赖注入(DI)和面向切面编程(AOP),用于管理对象的生命周期和解耦;Struts2是一个基于MVC设计模式的Web应用框架,负责处理...

    struts2最新配置

    3. **Action Mapping**:在struts.xml中,你需要为每个Action类定义一个映射,包括Action的名称、类路径、结果视图等。例如: ```xml <action name="exampleAction" class="com.example.ExampleAction"> ...

    中软笔试题.docx

    抽象类(abstract class)是Java中的一个关键概念,它允许包含抽象方法(没有实现的方法)和具体方法。抽象类不能被实例化,但可以作为其他类的父类。接口(interface)则是一个完全抽象的类型,它只能包含常量和...

    struts2 零配置所需的包及示例

    例如,可以定义一个全局的父包,然后所有的Action都可以继承这个父包,从而共享相同的拦截器链、结果类型等。 通过这种方式,开发者可以专注于业务逻辑,而不必被繁琐的XML配置所困扰。然而,零配置并不意味着完全...

Global site tag (gtag.js) - Google Analytics