dojochina的ExtJS视频教程学习笔记(二
来源:互联网 发布:区域填充算法 编辑:程序博客网 时间:2024/04/27 22:23
EXTJS的面向对象程序设计
◆EXTJS在面向对象作出的努力
支持命名空间
支持类实例属性
支持类实例方法
支持类静态方法
支持构造方法
支持类继承
支持类实例方法重写
支持命名空间别名
支持类别名
支持事件队列
命名空间
定义:对于类的组织定义方式
代码举例:
- Ext.namespace("Ext.dojochina");
Java代码对照:
- package Ext.dojochina;
完整示例代码:view
- // namespace.js
- Ext.namespace("Ext.dojochina");
- Ext.dojochina.HelloWorld = Ext.emptyFn;
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>命名空间</title>
- <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
- <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="../extjs/ext-all.js"></script>
- <script type="text/javascript" src="namespace.js"></script>
- <script type="text/javascript">
- new Ext.dojochina.HelloWorld();
- </script>
- </head>
- <body>
- </body>
- </html>
类实例属性
定义:对于一个实例的特征描述。
代码举例:
- ...
- Ext.apply(Ext.dojochina.Person.prototype, {
- name: '陈治文'
- });
Java代码对照:
- ...
- private String name = "陈治文";
- public void setName(String name){
- this.name = name;
- }
- public String getName(){
- return this.name
- }
- ...
完整示例代码:view
- // property.js
- Ext.namespace("Ext.dojochina");
- Ext.dojochina.Person = Ext.emptyFn;
- Ext.apply(Ext.dojochina.Person.prototype, {name: 'MacroChin'});
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>类实例属性</title>
- <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
- <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="../extjs/ext-all.js"></script>
- <script type="text/javascript" src="property.js"></script>
- <script type="text/javascript">
- var person=new Ext.dojochina.Person();
- alert(person.name);
- person.name='AotherPerson';
- alert(person.name);
- </script>
- </head>
- <body>
- </body>
- </html>
类实例方法
定义:一个对象所能具有的功能与动作。
代码举例:
- ...
- print: function(){
- alert(String.format("姓名:{0},性别:{1}", this.name, this.sex));
- }
Java代码对照:
- ...
- public void print(){
- System.out.printf("姓名:%s,性别:%s", this.name, this.sex);
- }
完整示例代码:view
- // dynamicMethod.js
- Ext.namespace("Ext.dojochina");
- Ext.dojochina.Person = Ext.emptyFn;
- Ext.apply(Ext.dojochina.Person.prototype, {
- name: '',
- sex: '',
- print: function(){
- alert(String.format("姓名:{0},性别:{1}", this.name, this.sex));
- }
- });
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>类实例方法</title>
- <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
- <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="../extjs/ext-all.js"></script>
- <script type="text/javascript" src="dynamicMethod.js"></script>
- <script type="text/javascript">
- var person = new Ext.dojochina.Person();
- person.name = 'MacroChin';
- person.sex = '男';
- person.print();
- person.name = 'Ann';
- person.sex = '女';
- person.print();
- </script>
- </head>
- <body>
- </body>
- </html>
类静态方法
定义:在一个类级别上共享的方法。
代码举例:
- ...
- Ext.dojochina.Person.print = function(name, sex){
- var p = new Ext.dojochina.Person();
- p.name = name;
- p.sex = sex;
- p.print();
- }
Java代码对照:
- ...
- public static void print(String name, String sex){
- Person person = new Person();
- person.setName(name);
- person.setSex(sex);
- person.print();
- }
完整示例代码:view
- // staticMethod.js
- Ext.namespace("Ext.dojochina");
- Ext.dojochina.Person = Ext.emptyFn;
- Ext.dojochina.Person.print = function(name, sex){
- var p = new Ext.dojochina.Person();
- p.name = name;
- p.sex = sex;
- p.print();
- }
- Ext.apply(Ext.dojochina.Person.prototype, {
- name: '',
- sex: '',
- print: function(){
- alert(String.format("姓名:{0},性别:{1}", this.name, this.sex));
- }
- });
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>类静态方法</title>
- <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
- <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="../extjs/ext-all.js"></script>
- <script type="text/javascript" src="staticMethod.js"></script>
- <script type="text/javascript">
- Ext.dojochina.Person.print('MacroChin', '男');
- Ext.dojochina.Person.print('Ann', '女');
- </script>
- </head>
- <body>
- </body>
- </html>
构造方法
定义:在初始化一个对象的同时执行的方法。
代码举例:
- Ext.dojochina.Person = function(_cfg){
- Ext.apply(this, _cfg);
- }
Java代码对照:
- ...
- public Person(String name, String sex){
- this.name = name;
- this.sex = sex;
- }
- ...
完整示例代码:view
- // initialize.js
- Ext.namespace("Ext.dojochina");
- Ext.dojochina.Person = function(_cfg){
- Ext.apply(this, _cfg);
- }
- Ext.dojochina.Person.print = function(name, sex){
- var person = new Ext.dojochina.Person({name: name, sex:sex});
- person.print();
- }
- Ext.apply(Ext.dojochina.Person.prototype, {
- print: function(){
- alert(String.format("Name:{0} Sex:{1}", this.name, this.sex));
- }
- })
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>构造方法</title>
- <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
- <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="../extjs/ext-all.js"></script>
- <script type="text/javascript" src="initialize.js"></script>
- <script type="text/javascript">
- Ext.dojochina.Person.print('PersonA', '女');
- Ext.dojochina.Person.print('PersonB', '男');
- </script>
- </head>
- <body>
- </body>
- </html>
类继承
定义:对于类的一种扩展形式。
代码举例:
- Ext.extend(Ext.dojochina,Strudent,
- Ext.dojochina.Person, {
- job: '学生'
- }
- );
Java代码比照:
- class Student extend Person{
- public Student(String name, String sex){
- super(name, sex);
- this.setJob("学生");
- }
- }
完整示例代码:view
- // Person.js
- Ext.namespace("Ext.dojochina");
- Ext.dojochina.Person = function(_cfg){Ext.apply(this, _cfg)};
- Ext.apply(Ext.dojochina.Person.prototype, {
- job: '无',
- print: function(){
- alert(String.format('姓名:{0} 性别:{1} 角色:{2}', this.name, this.sex, this.job));
- }
- });
- // Teacher.js
- Ext.namespace("Ext.dojochina");
- Ext.dojochina.Teacher = function(_cfg){Ext.apply(this, _cfg);};
- Ext.extend(Ext.dojochina.Teacher, Ext.dojochina.Person, {job: '教师'});
- // Student.js
- Ext.namespace("Ext.dojochina");
- Ext.dojochina.Student = function(_cfg){Ext.apply(this, _cfg);};
- Ext.extend(Ext.dojochina.Student, Ext.dojochina.Person, {job: '学生'});
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>类继承</title>
- <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
- <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="../extjs/ext-all.js"></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 t = new Ext.dojochina.Teacher({name:'老师A', sex:'女'});
- t.print();
- var s = new Ext.dojochina.Student({name:'学生B', sex:'男'});
- s.print();
- </script>
- </head>
- <body>
- </body>
- </html>
类实例方法重写
定义:子类在继承父类时对其已经存在的方法进行重新定义。
代码举例:
- Ext.extend(Ext.dojochina.Teacher,
- Ext.dojochina.Person, {
- print: function(){
- alert(String.format('{0}是一位{1}老师', this.name, this.sex));
- }
- }
- );
完整示例代码:view
- // Person.js
- Ext.namespace("Ext.dojochina");
- Ext.dojochina.Person = function(_cfg){Ext.apply(this, _cfg)};
- Ext.apply(Ext.dojochina.Person.prototype, {
- job: '无',
- print: function(){
- alert(String.format('姓名:{0} 性别:{1} 角色:{2}', this.name, this.sex, this.job));
- }
- });
- // teacher_.js
- Ext.namespace("Ext.dojochina");
- Ext.dojochina.Teacher = function(_cfg){Ext.apply(this, _cfg);};
- Ext.extend(Ext.dojochina.Teacher, Ext.dojochina.Person, {
- print: function(){
- alert(String.format('{0}是一位{1}老师', this.name, this.sex));
- }
- });
- // student_.js
- Ext.namespace("Ext.dojochina");
- Ext.dojochina.Student = function(_cfg){Ext.apply(this, _cfg);};
- Ext.extend(Ext.dojochina.Student, Ext.dojochina.Person, {
- print: function(){
- alert(String.format('{0}是一位{1}学生', this.name, this.sex));
- }
- });
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>类方法重写</title>
- <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
- <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="../extjs/ext-all.js"></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 p = new Ext.dojochina.Person({name:'PersonX', sex: '男'});
- p.print();
- var t = new Ext.dojochina.Teacher({name:'老师A', sex:'女'});
- t.print();
- var s = new Ext.dojochina.Student({name:'学生B', sex:'男'});
- s.print();
- </script>
- </head>
- <body>
- </body>
- </html>
命名空间别名
定义:对于命名空间的别称。(别名首字母要大写)
代码举例:
- Dc = Ext.dojochina;
完整示例代码:view
- // namespaceShort.js
- Ext.namespace('Ext.dojochina');
- Dc = Ext.dojochina;
- Dc.Person = function(_cfg){Ext.apply(this, _cfg);};
- Dc.Person.print = function(name, sex){
- var p = new Dc.Person({name: name , sex: sex});
- p.print();
- }
- Ext.apply(Dc.Person.prototype,{
- print: function(){
- alert(String.format('姓名:{0}, 性别:{1}', this.name, this.sex));
- }
- });
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>命名空间别名</title>
- <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
- <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="../extjs/ext-all.js"></script>
- <script type="text/javascript" src="namespaceShort.js"></script>
- <script type="text/javascript">
- var p = new Dc.Person({name:'MC', sex:'M'});
- p.print();
- var t = new Ext.dojochina.Person({name:'MacroChin', sex:'男'});
- t.print();
- </script>
- </head>
- <body>
- </body>
- </html>
类别名
定义:对于类的别称。(别名全部字母都要大写)
代码举例:
- PN=Ext.dojochina.Person;
完整示例代码:view
- // classShort.js
- Ext.namespace('Ext.dojochina');
- Ext.dojochina.Person = function(_cfg){Ext.apply(this, _cfg);};
- PN = Ext.dojochina.Person;
- PN.print = function(name, sex){
- var p = new PN({name: name, sex: sex});
- p.print();
- };
- Ext.apply(PN.prototype, {
- print: function(){
- alert(String.format('姓名: {0} , 性别: {1}', this.name, this.sex));
- }
- });
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>类别名</title>
- <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
- <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="../extjs/ext-all.js"></script>
- <script type="text/javascript" src="classShort.js"></script>
- <script type="text/javascript">
- var p = new PN({name:'MC', sex:'M'});
- p.print();
- var t = new Ext.dojochina.Person({name:'MacroChin', sex:'Male'});
- t.print();
- </script>
- </head>
- <body>
- </body>
- </html>
事件
定义:对于外界影响的反应,在ExtJS还支持事件队列模式,由 Ext.util.Observable类支持。
完整示例代码:view
- // event.js
- Ext.namespace('Ext.dojochina');
- Ext.dojochina.Person = function(){
- this.addEvents(
- 'namechange',
- 'sexchange'
- );
- };
- Ext.extend(Ext.dojochina.Person, Ext.util.Observable, {
- name: '' ,
- sex: '' ,
- setName: function(_name){
- if(this.name != _name){
- this.fireEvent('namechange', this, this.name, _name);
- this.name = _name;
- }
- },
- setSex: function(_sex){
- if(this.sex != _sex){
- this.fireEvent('sexchange', this, this.sex, _sex);
- this.sex = _sex;
- }
- }
- });
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>事件</title>
- <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
- <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="../extjs/ext-all.js"></script>
- <script type="text/javascript" src="event.js"></script>
- <script type="text/javascript">
- var person = null;
- button_click = function(){
- person.setName(prompt('请输入姓名', ''));
- person.setSex(prompt('请输入性别', ''));
- }
- Ext.onReady(function(){
- var txt_name = Ext.get('txt_name');
- var txt_sex = Ext.get('txt_sex');
- person = new Ext.dojochina.Person();
- person.on('namechange', function(person, oldVal, newVal){
- txt_name.dom.value = newVal;
- });
- person.on('sexchange', function(person, oldVal, newVal){
- txt_sex.dom.value = newVal;
- });
- person.on('namechange', function(person, oldVal, newVal){
- document.title = newVal;
- });
- });
- </script>
- </head>
- <body>
- 姓名:<input type="text" id="txt_name" /> <BR/>
- 性别:<input type="text" id="txt_sex" /> <BR/>
- <button onclick="button_click()">输入</button>
- </body>
- </html>
◆EXTJS的另几种面向对象设计体现
GWT-EXT为JAVA程序员编写EXTJS应用提供了可能
EXTTLD为JSP程序员的标签化部署EXTJS提供了可能
EXTSharp为C#程序员编写EXTJS的应用提供了可能
- dojochina的ExtJS视频教程学习笔记(二
- dojochina ExtJS学习笔记1
- dojochina ExtJS学习笔记2
- ExtJS学习笔记(二)
- ExtJS(视频教程学习)
- extjs研究学习笔记《二》
- ExtJS学习笔记(二) Grid
- Extjs可视化设计视频教程二
- ExtJS学习笔记(二):handler与listener的区别
- ExtJS学习笔记(二):handler与listener的区别
- ExtJS学习笔记之二-------ExtJS入门介绍
- ExtJS学习笔记二:编码规范
- Yii2学习笔记(二):慕课网视频教程笔记
- JNI视频教程 笔记(二)
- ExtJs视频教程
- 视频教程学习笔记1
- ExtJS学习笔记之一-------ExtJs与jQuery的比较
- extJs 2.0学习笔记(Ext.Panel篇二)
- 2010钓鱼系统
- 用curl抓取数据
- http://topic.csdn.net/t/20061023/19/5103384.html
- 几个常见网络测试命令
- C/C++ 程序设计员应聘常见面试试题深入剖析
- dojochina的ExtJS视频教程学习笔记(二
- 字典与集合(Dictionary与Collection)
- A Makefile example
- 诺基亚打响帝国反击战 专家称大势已去
- [转]ImageMagick for java 使用Jmagick压缩高质量图片jmagick-win-6.3.9-Q16.zip
- 简单使用的Google Android应用软件
- 招骋点滴
- 盗梦空间现实版:Linux正盗走Windows美梦
- onsubmit