刚刚走了个大弯路,朋友们见笑,我这见识实在太少了,开始想找个有语法提示的IDE,就直接想到了Aptana,下载一个最新版本,然后就弹出来一大堆东西要更新,更新就更新吧,更新一半就报错,看他给的提示,说xxx本机已经装了不能再装,那个版本不新了不能装,好长的一溜,找了半天,终于把非法的插件都去掉了,安装了一半又出问题了,我倒,faint,怒了,又跑回MyEclipse安装Spket(参考:http://www.iteye.com/topic/188454 ),终于搞定,本来几分钟搞定的问题,让我白费了半天力气。废话少说,开始学习。
书接上回,走你....
构造方法
构造方法就是在初始化一个对象同时执行的方法。
java中是这样的
public Person(String name, String sex) { this.name = name; this.sex = sex; }
看Ext是怎么实现的
- Ext.namespace("com.meizhi");
- //构造方法
- com.meizhi.Person = function(_cfg) {
- Ext.apply(this, _cfg);
- }
- //类静态方法
- com.meizhi.Person.print = function(_name, _sex) {
- var _person = new com.meizhi.Person({name:_name,sex:_sex});
- _person.print();
- }
- Ext.apply(com.meizhi.Person.prototype, {
- print:function(){
- alert(String.format("姓名:{0}, 性别:{1}", this.name, this.sex));
- }
- });
Ext.namespace("com.meizhi"); //构造方法 com.meizhi.Person = function(_cfg) { Ext.apply(this, _cfg); } //类静态方法 com.meizhi.Person.print = function(_name, _sex) { var _person = new com.meizhi.Person({name:_name,sex:_sex}); _person.print(); } Ext.apply(com.meizhi.Person.prototype, { print:function(){ alert(String.format("姓名:{0}, 性别:{1}", this.name, this.sex)); } });
这里看起来有一点点不一样哦,和之前的类实例化代码有差别,name和sex属性在 Ext.apply(com.meizhi.Person.prototype, {}) 过程中并没有被构造,而是通过构造方法的参数 _cfg 将这两个属性传进去的,事实上,构造类实例的时候将对象的一组属性作为一个对象传到构造方法中, _cfg 参数就是传进来的属性对象 。
调用,因为print方法是类静态方法,所以采用这种方式来调用
- <script type="text/javascript">
- new com.meizhi.Person.print("meizhi","男");
- new com.meizhi.Person.print("katrana","女");
- </script>
<script type="text/javascript"> new com.meizhi.Person.print("meizhi","男"); new com.meizhi.Person.print("katrana","女"); </script>
这种方式在Ext中经常被用到,因为这种方式更加的灵活,在构建对象的时候动态的设置对象的属性,在对象属性比较的多的情况下简化了构造过程。
类继承
构造几个必要的类来模拟继承的场景,分别是父类Person,子类Teacher和Student,把它们分开来写。
Person.js
- Ext.namespace("com.meizhi");
- //构造方法
- com.meizhi.Person = function(_cfg) {
- Ext.apply(this, _cfg);
- }
- Ext.apply(com.meizhi.Person.prototype, {
- role:"无",
- print:function(){
- alert(String.format("姓名:{0}, 性别:{1}, 角色:{2}", this.name, this.sex, this.role));
- }
- });
Ext.namespace("com.meizhi"); //构造方法 com.meizhi.Person = function(_cfg) { Ext.apply(this, _cfg); } Ext.apply(com.meizhi.Person.prototype, { role:"无", print:function(){ alert(String.format("姓名:{0}, 性别:{1}, 角色:{2}", this.name, this.sex, this.role)); } });
Teacher.js
- Ext.namespace("com.meizhi");
- com.meizhi.Teacher = function(_cfg) {
- Ext.apply(this, _cfg);
- }
- Ext.extend(com.meizhi.Teacher, com.meizhi.Person, {
- role:"老师"
- });
Ext.namespace("com.meizhi"); com.meizhi.Teacher = function(_cfg) { Ext.apply(this, _cfg); } Ext.extend(com.meizhi.Teacher, com.meizhi.Person, { role:"老师" });
Student.js
- Ext.namespace("com.meizhi");
- com.meizhi.Student = function(_cfg) {
- Ext.apply(this, _cfg);
- }
- Ext.extend(com.meizhi.Student, com.meizhi.Person, {
- role:"学生"
- });
Ext.namespace("com.meizhi"); com.meizhi.Student = function(_cfg) { Ext.apply(this, _cfg); } Ext.extend(com.meizhi.Student, com.meizhi.Person, { role:"学生" });
子类Teacher和Student中首先定义了一个构造方法,然后声明继承,在extend()方法中还可以将属性重新设置。
extend()方法的参数格式:Ext.extend(子类, 父类, { 属性列表 });
调用,别忘了引入相关的JS文件
- <script type="text/javascript" src="person.js"></script>
- <script type="text/javascript" src="teacher.js"></script>
- <script type="text/javascript" src="student.js"></script>
- <script type="text/javascript">
- var _teacher = new com.meizhi.Teacher({name:"陈治文", sex:"男"});
- _teacher.print();
- var _student = new com.meizhi.Student({name:"katrana", sex:"女"});
- _student.print();
- </script>
<script type="text/javascript" src="person.js"></script> <script type="text/javascript" src="teacher.js"></script> <script type="text/javascript" src="student.js"></script> <script type="text/javascript"> var _teacher = new com.meizhi.Teacher({name:"陈治文", sex:"男"}); _teacher.print(); var _student = new com.meizhi.Student({name:"katrana", sex:"女"}); _student.print(); </script>
Ext中使用extend来实现继承,Dojo中的方式比较简便,一个 dojo.declare() 方法完成了类的声明和继承两件事,区别只在于参数上。
类实例方法重写
直接看代码:
Person.js
- Ext.namespace("com.meizhi");
- //构造方法
- com.meizhi.Person = function(_cfg) {
- Ext.apply(this, _cfg);
- }
- Ext.apply(com.meizhi.Person.prototype, {
- role:"无",
- print:function(){
- alert(String.format("姓名:{0}, 性别:{1}, 角色:{2}", this.name, this.sex, this.role));
- }
- });
Ext.namespace("com.meizhi"); //构造方法 com.meizhi.Person = function(_cfg) { Ext.apply(this, _cfg); } Ext.apply(com.meizhi.Person.prototype, { role:"无", print:function(){ alert(String.format("姓名:{0}, 性别:{1}, 角色:{2}", this.name, this.sex, this.role)); } });
Teacher.js
- Ext.namespace("com.meizhi");
- com.meizhi.Teacher = function(_cfg) {
- Ext.apply(this, _cfg);
- }
- Ext.extend(com.meizhi.Teacher, com.meizhi.Person, {
- role:"老师",
- print:function(){
- alert(String.format("{0}是一名{1}{2}", this.name, this.sex, this.role));
- }
- });
Ext.namespace("com.meizhi"); com.meizhi.Teacher = function(_cfg) { Ext.apply(this, _cfg); } Ext.extend(com.meizhi.Teacher, com.meizhi.Person, { role:"老师", print:function(){ alert(String.format("{0}是一名{1}{2}", this.name, this.sex, this.role)); } });
Student.js
- Ext.namespace("com.meizhi");
- com.meizhi.Student = function(_cfg) {
- Ext.apply(this, _cfg);
- }
- Ext.extend(com.meizhi.Student, com.meizhi.Person, {
- role:"学生",
- print:function(){
- alert(String.format("{0}是一名{1}{2}", this.name, this.sex, this.role));
- }
- });
Ext.namespace("com.meizhi"); com.meizhi.Student = function(_cfg) { Ext.apply(this, _cfg); } Ext.extend(com.meizhi.Student, com.meizhi.Person, { role:"学生", print:function(){ alert(String.format("{0}是一名{1}{2}", this.name, this.sex, this.role)); } });
调用
- <script type="text/javascript" src="person.js"></script>
- <script type="text/javascript" src="teacher.js"></script>
- <script type="text/javascript" src="student.js"></script>
- <script type="text/javascript">
- var _person = new com.meizhi.Person({name:"meizhi",sex:"男"});
- _person.print();
- var _teacher = new com.meizhi.Teacher({name:"陈治文", sex:"男"});
- _teacher.print();
- var _student = new com.meizhi.Student({name:"katrana", sex:"女"});
- _student.print();
- </script>
<script type="text/javascript" src="person.js"></script> <script type="text/javascript" src="teacher.js"></script> <script type="text/javascript" src="student.js"></script> <script type="text/javascript"> var _person = new com.meizhi.Person({name:"meizhi",sex:"男"}); _person.print(); var _teacher = new com.meizhi.Teacher({name:"陈治文", sex:"男"}); _teacher.print(); var _student = new com.meizhi.Student({name:"katrana", sex:"女"}); _student.print(); </script>
结果会输出“姓名:梅智,性别:男,角色:无”,“陈治文是一名男老师”和“katrana是一名女学生”。
可见父类是没有变化的,子类重写父类中的属性和方法,只会改变子类中的属性和方法。
回顾一下java中的“重写 overwrite”和“重载 override”,简单的说,不是非常准确的解释:
重写 overwrite: 重写方法必须和被重写方法具有相同的方法名,参数列表和返回类型。
重载 override:重载方法必须和被重载方法具有相同的方法名和返回类型,但是参数列表不相同 。
详细的解释参考一下:http://kiddwyl.iteye.com/blog/179325
发表评论
-
Ext-API详解--core/Ext.js
2011-05-11 20:58 7961、Ext.apply (Object obj, Obje ... -
Ext学习笔记09 - ComboBox,Store
2011-05-11 20:53 1049ComboBox ComboBox是指下拉菜单,在API ... -
Ext学习笔记08 - 日期控件
2011-05-11 20:50 971日期控件 在上一篇笔记中的基础上,为Birth加上日期控 ... -
Ext学习笔记07 - Window及Window中的布局
2011-05-11 20:48 836Window 复习一下,先来构造一个Window对象 ... -
Ext学习笔记06 - Window
2011-05-11 20:46 932这两天比较忙,没有连续起来,Excel的文章发了一篇,基本上就 ... -
Ext学习笔记05 - UI组件 - Panel,TextField
2011-05-11 20:45 1516TextField TextField在Ext.form ... -
Ext学习笔记04 - UI组件 - Component, Button
2011-05-11 20:44 899Component 在Ext中对常用的UI组件都进 ... -
Ext学习笔记03 - 事件
2011-05-11 20:42 797Ext中的事件机制 Ext中的事件机制是在 Ext.ut ... -
Ext学习笔记01 - NameSpace,类实例属性,类实例方法,类静态方法(转)
2011-05-11 20:36 1250从今天起开始学习ExtJs,在这里记录一些学习笔记,方便日后查 ... -
js 将checkbox, radio, select控件设置为只读不可选
2011-05-11 20:27 22991 <script language=jav ... -
ext上传文件代码
2011-05-11 20:23 938Js代码 var gameFrom = new Ext. ...
相关推荐
ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0
Gwt-ext学习笔记,Gwt-ext学习笔记,Gwt-ext学习笔记
Ext学习笔记-个人版(表单验证,使用JSON的方法,使用new和xtype创建对象的区别)
bcprov-ext-jdk16-1.45.jar资源包 ,在进行JAVA的ECC椭圆算法调用时,需要用到的jar包
该破解适用于ExtDesigner-1.2.0,及ExtDesigner-1.2.2-48.exe,均测试通过, ExtDesigner原版下载地址 http://www.sencha.com/products/designer/download/ 使用时需要在Extjs网站注册个用户,注册地址: ...
ext-3.3.1ext-3.3.1ext-3.3.1ext-3.3.1ext-3.3.1ext-3.3.1
ext 学习笔记 ext 学习笔记 ext 学习笔记
...
...
Ext ExtJs API详解 Ext API详解--笔记
ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记...
ext-ms-win-gdi-desktop-l1-1-0.dll 用于解决这个dll文件丢失问题,下载后将此文件放置在相关文件根目录下,即可解决丢失问题
ext-4.0.2a-gplext-4.0.2a-gpl
开发EXT的过程中总结的一些使用技巧。关于EXT对象封装的一些应用。
前端开源库-style-ext-html-webpack-pluginStyleExtHTML Webpack插件,通过启用内嵌样式增强HTML Webpack插件功能。
ext-base ext-4.1.1a-commercial
spketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-...
Gwt-ext学习笔记之基础篇、安装、配置、例子。
ext+jsp分页---好不好,大家说了算。下载不扣分,回帖加1分,欢迎下载,童叟无欺。ext+jsp分页---好不好,大家说了算。下载不扣分,回帖加1分,欢迎下载,童叟无欺。ext+jsp分页---好不好,大家说了算。下载不扣分,...