面向对象,定义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 widget。 ### 1. 模板 模板是 Dojo 组件的基础,它定义了组件在页面上的结构和...
Dojo支持ES6的类语法,同时也提供了一套自己的"class"机制,如dojo.declare,它允许在非ES6环境中实现类似类的继承和封装。 在Dojo中,你可以创建类并定义它们的方法和属性,然后实例化这些类以创建对象。例如,...
这个类通常会继承Dojo的内置Widget基类,如`dijit._WidgetBase`和`dijit._TemplatedMixin`,以获取基本的Widget功能和模板支持。 3. **定义属性(Attributes)**:在Widget类中定义属性,这些属性可以在实例化时...
在编程世界中,"Coding Dojo"是一种集体学习和练习编程技能的方式,通常涉及解决特定问题或挑战。在这个"coding_dojo_python_oop"项目中,重点是使用Python语言进行面向对象编程(OOP)。面向对象编程是软件开发中一...
文件`dojo.js`可能引用了Dojo工具库,Dojo提供了一套完整的JavaScript模块系统和类定义机制。在Dojo中,我们可以使用`dojo.declare`来创建类。 ```javascript dojo.declare("Person", null, { constructor: ...
在`dojo-testing-master`项目中,可能包含了不同类型的测试示例,比如集成测试、性能测试和模拟对象的使用。集成测试用于验证不同组件之间的交互,而性能测试则关注代码的运行时间和资源消耗。在Swift中,可以使用`...
它包含了一些预定义的插件和标签,方便在视图层使用Dojo组件。 4. `struts2-json-plugin`包:该包支持JSON(JavaScript Object Notation)数据格式的处理,使得Struts2可以方便地与JSON API进行交互,这对于现代Web...
Struts2提供了丰富的插件,如 strut2-dojo-plugin 和 strut2-convention-plugin,分别用于支持Dojo库和自动配置Action。这使得Struts2能够轻松集成第三方库,提高开发效率。 8. **Action配置示例**: ```xml ...
总的来说,Struts2的datetimepicker标签结合Dojo库提供了直观的日期和时间选择功能,使得开发者可以轻松地在Web应用中集成这一功能,提高了用户交互的便利性。通过正确配置Action和使用datetimepicker标签,开发者...
在`struts.xml`中,可以使用`<interceptors>`和`<default-interceptor-ref>`来定义全局拦截器和Action级别的拦截器。 5. **结果类型**:结果类型决定了Action执行完成后如何跳转。默认的结果类型是`dispatcher`,它...
Struts2是一个轻量级、可扩展的MVC框架,它继承了Struts1的优点并解决了其不足,如性能问题和复杂性。在Struts2中,Action类是业务逻辑的载体,而配置文件(通常为struts.xml)用于定义Action与URL之间的映射关系,...
Action类通常继承自`ActionSupport`类,该类提供了默认的错误处理和国际化支持。 在Struts2中,`配置文件`(struts.xml)扮演着关键角色,它定义了Action类、结果类型、拦截器链等。配置文件告诉Struts2如何路由...
5. **包配置**:包是一种组织Action、拦截器和结果的方式,可以继承和覆盖父包的配置。包的配置允许你定义默认的Action类、拦截器栈和结果类型。例如: ```xml ``` 这里创建了一个名为"base"的包,继承了...
4. **原型与继承**:原型链、__proto__、prototype、构造函数、Object.create()、类(ES6 Class)。 5. **异步编程**:回调函数、Promise、async/await(ES6异步操作)。 6. **DOM操作**:选择元素...
6. **包配置**:通过包的概念组织Action和相关配置,可以继承和覆盖父包的配置。 在深入学习Struts2的过程中,理解并掌握上述知识点至关重要。同时,阅读源码可以帮助我们更好地理解框架的工作原理,提升开发效率和...
SSH是Java Web开发中的三大框架组合,分别是Spring、Struts2和Hibernate。Spring提供了依赖注入(DI)和面向切面编程(AOP),用于管理对象的生命周期和解耦;Struts2是一个基于MVC设计模式的Web应用框架,负责处理...
3. **Action Mapping**:在struts.xml中,你需要为每个Action类定义一个映射,包括Action的名称、类路径、结果视图等。例如: ```xml <action name="exampleAction" class="com.example.ExampleAction"> ...
抽象类(abstract class)是Java中的一个关键概念,它允许包含抽象方法(没有实现的方法)和具体方法。抽象类不能被实例化,但可以作为其他类的父类。接口(interface)则是一个完全抽象的类型,它只能包含常量和...
例如,可以定义一个全局的父包,然后所有的Action都可以继承这个父包,从而共享相同的拦截器链、结果类型等。 通过这种方式,开发者可以专注于业务逻辑,而不必被繁琐的XML配置所困扰。然而,零配置并不意味着完全...