ExtJS面向对象
序言
1.ExtJs是一套很好的后台框架。现在很流行的,我们要会。
2.这是我写ExtJs的第一篇,以后会写很多直到把这框架运用的炉火纯青,走火入魔。
ExtJs中的命名空间
我是做.net的,这命名空间名字一样,功能也一样,都是对项目中类进行有效的管理,区分类的作用域。他们的层次结构都是使用“.”来划分的。只不过定义的时候不一样。Ext是通过namespace()方法来定义的。(这里我先不展示,例子中我会用到的)
Javascript中的类定义
1.JavaScript是个基于原型链继承的语言,没有类的概念。而且JavaScript语言特点就是松散和自由,实现一个同样的功能,可以有很多种方式,但是如果放任它的松散和自由,就很难维护和重用代码。
2.面向对象编程绝大部分都是基于类的。然而让extjs实现oop机制,既能做到既有面向对象编程的规范性,又能做到JavaScript的灵活性。不是不可能,你一定要了解js中的prototype。
//假设我们定义一个Person类,因为js中没有类概念
Person = function () {
this.head = 1;
this.legs = 2;
this.sex="or";
} Person.prototype =
{
say: function () {
alert("I'm a person , I have " + this.head + " head and " + this.legs + " lesgs .");
},
run: function () {
alert("I can fly ,because I have " + this.head + " head");
},
saySex:function(){
alert("I'm a "+this.sex);
}
//下面是还可以继续写方法的
} var person = new Person();
alert(person.head); //结果:1
person.say(person.head, person.legs); //结果:I'm a person , I have 1 head and 2 lesgs .
person.run(this.head); //结果:I can fly ,because I have 1 head
prototype是js中一个非常重要的功能。能动态的为对象添加任何新方法。ExtJs就是基于prototype实现OOP的。
ExtJs 中的 OOP
既然是面向对象的设计思想,那么就会有,继承、多态、封装。
ExtJs是用javascript封装起来的一个后台应用框架,我们先看一下extJs是怎么实现oop的。
1、命名空间,public,private。
//js中的 命名空间,public,private
Ext.namespace("com.zlh");
com.zlh.seeInfo = function () {
//私有成员
var name = "zhanglonghao";
//私有方法
say = function () { alert(" I'm zhanglonghao . "); }
//私有方法
sayEgg = function () { alert(" You are a bad egg ! "); } //共有方法
return { //这里面可以访问到 say(), name //共有成员
sayHello: function () { alert(" Hellow everyone . do you know " + name + " ?"); },
//共有成员
run: function () { alert(" I want to fly higher . "); }
};
}; com.zlh.seeInfo.prototype.age = ; //这里访问不到 name, say();
var zlh = new com.zlh.seeInfo();
zlh.sayHello();
zlh.run();
2、js实现类的继承
//假设我们定义一个Person类,因为js中没有类概念
Person = function () {
this.head = 1;
this.legs = 2;
this.sex="or";
} Person.prototype =
{
say: function () {
alert("I'm a person , I have " + this.head + " head and " + this.legs + " lesgs .");
},
run: function () {
alert("I can fly ,because I have " + this.head + " head");
},
saySex:function(){
alert("I'm a "+this.sex);
}
//下面是还可以继续写方法的
} //类的继承
var extend = function (p, c) {
c.prototype = p.prototype;
} Man = function () {
this.sex = "Man";
} extend(Person, Man);
var gc = new Man();
gc.saySex(this.sex);
3、extjs实现类的继承
//js中的 命名空间,public,private
Ext.namespace("com.zlh");
com.zlh.seeInfo = function () {
//私有成员
var name = "zhanglonghao";
//私有方法
say = function () { alert(" I'm zhanglonghao . "); }
//私有方法
sayEgg = function () { alert(" You are a bad egg ! "); } //共有方法
return { //这里面可以访问到 say(), name //共有成员
sayHello: function () { alert(" Hellow everyone . do you know " + name + " ?"); },
//共有成员
run: function () { alert(" I want to fly higher . "); }
};
}; com.zlh.seeInfo.prototype.age = 24; //love子类继承自父类seeInfo
Ext.extend(com.zlh.love, com.zlh.seeInfo, { //新方法
loveYou: function () {
alert(" You , my love ! ");
}, //重写方法
say: function () {
alert(" I love you !");
} }); var ejc = new com.zlh.love();
ejc.say();
ejc.loveYou();
alert(ejc.age); //这里是24
alert(ejc.name); //这里是undefind
配置(Config)选项
在Extjs中初始化对象时,大量的使用啦Config这个参数,而Config是一个json对象,为Extjs立下啦不少悍马功劳。
假设有一个Blog类,有标题和作者两个属性,并通过构造函数为属性初始化。
Blog = function (title, author) {
this.title = title;
this.author = author;
}
var Blog = new Blog("Extjs-OOP", "张龙豪");
alert(Blog.title+" , 这篇博文的作者是:"+Blog.author+"。感谢阅读。");
上面这段代码的数据我们用json代替。
Blog = function (config) {
this.title = config.title;
this.author = config.author;
}
var Blog = new Blog({title:"Extjs-OOP", author:"张龙豪"});
alert(Blog.title+" , 这篇博文的作者是:"+Blog.author+"。感谢阅读。");
下面看看Extjs的实现方式
Blog = function (config) {
Ext.apply(this,config);
}
var Blog = new Blog({title:"Extjs-OOP", author:"张龙豪"});
alert(Blog.title+" , 这篇博文的作者是:"+Blog.author+"。感谢阅读。");
Extjs定义的apply这个方法,作用是将第二个参数的成员赋值给第一个参数,这样代码写起来就方便,简便多啦。
Ext.apply()和Ext.applyIf()
上面我们已经看过apply(obj,config)的功能啦,applyIf(obj,config)的功能跟apply(obj,config)的功能一样,也有不一样的。
apply是将config和obj参数的同名属性值覆盖,并将config中的其它属性添加到obj中。
apply是将config中的属性添加到obj中,但obj参数原有的属性值不变。(看下例子吧)
apply(obj,config);
Blog = function (config) {
this.title = "Extjs-OOP";
Ext.apply(this,config);
}
var Blog = new Blog({ title: " Extjs4.*,开发实例。 ", author: "张龙豪" }); //输出:Extjs-OOP,这博文的作者是:张龙豪.感谢阅读。
alert(Blog.title+" , 这篇博文的作者是:"+Blog.author+"。感谢阅读。");
applyIf(obj,config);
Blog = function (config) {
this.title = "Extjs-OOP";
Ext.applyIf(this,config);
}
var Blog = new Blog({ title: " Extjs4.*,开发实例 ", author: "张龙豪" }); //输出:Extjs-OOP,这博文的作者是:张龙豪.感谢阅读。
alert(Blog.title+" , 这篇博文的作者是:"+Blog.author+"。感谢阅读。");
这篇博客是学习extjs的一些基础知识普及。看似无关实际很重要。我用的是Extjs4.2。文章js引用:ext-all.js。
本文参考资料:李赞红老师的 《轻松搞定ExtJs》
ExtJS面向对象的更多相关文章
- ExtJs4 基础必备
认识ExtJs的开发包 下载路径:http://www.sencha.com/products/extjs/download/ 解压有20多兆,别怕,真正运行的没这么大.认识下这个包的文件结构吧. b ...
- 面向对象的ExtJS场景开发
写ExtJS已经3各月了,项目中临时学的,主要参考ExtJS 的文档学习,推荐一款JS开发工具Aptana Studio 3. 大概说一下开发ExtJS的准备: 1.下载Extjs(目前有4.x我使用 ...
- Extjs 源码组成(4.0.7)
(function(){})()形式的自执行,构建Ext对象(0~584) 1 设置全局对象EXt:global.Ext = {}, 2 实现了Ext对象面向对象编程的基础方法,如,apply,ex ...
- 一个简单的、面向对象的javascript基础框架
如果以后公司再能让我独立做一套新的完整系统,那么我肯定会为这个系统再写一个前端框架,那么我到底该如何写这个框架呢? 在我以前的博客里我给大家展示了一个我自己写的框架,由于当时时间很紧张,做之前几乎没有 ...
- 以最简单的登录为例,诠释JS面向对象的简单实例
JavaScript,是前端开发人员必须会的一门技术,从JS演变出来的有很多框架,先说说几个热门的框架吧: JQuery:这个技术必须会,如果不会,那一定要会查api,知道怎么写,要看得懂英文文档,这 ...
- 关于ExtJS、JQuery UI和easy UI的选择问题
转自百度知道. 问:做企业级应用,比如***管理系统,不需要华丽的特效,只希望简单,风格统一.能用到的只有messagebox.tree.grid大概这几个,其他特效不要,忘大神根据自己的见解以及我这 ...
- JQuery-EasyUI与EXTjs有什么区别?
一.ExtJS1.ExtJS可以用来开发RIA也即富客户端的AJAX应用,是一个用javascript写的,主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架.因此,可以把ExtJS用在 ...
- [JS] 面向对象的5种写法和拓展JS对象的写法
面向对象的JAVA 最开始当然是对象的定义了 收集了以下的五种写法 //第1种写法 function Circle(r) { this.r = r; } Circle.PI = 3.14159; C ...
- ExtJS与jQuery的一点细节上的对比
首先说明这不是一篇完整解读ExtJS和jQuery所有方面差异的文章,只是针对我个人刚看了两天的jQuery产生的一些疑问的整理.之前用过一段时间ExtJS,了解ExtJS的一些机制.现在做移动开发, ...
随机推荐
- 线段树 - ZYB's Premutation
ZYB has a premutation P,but he only remeber the reverse log of each prefix of the premutation,now he ...
- 从倒影说起,谈谈 CSS 继承 inherit(转)
从倒影说起,谈谈 CSS 继承 inherit 给定一张有如下背景图的 div: 制作如下的倒影效果: 方法很多,但是我们当然要寻找最快最便捷的方法,至少得是无论图片怎么变化,div 大小怎么变化,我 ...
- JSPatch 中 defineClass 中覆盖方法的使用
今天研究了一下JSPatch,发现好神奇好奇妙,感觉这几天我都会乐此不彼的去研究这个高大上的东西. 出处来着:https://github.com/bang590/JSPatch 简单介绍一下这个 d ...
- About kaychen
关于我 现武汉科技大学,大二学生.互联网前端技术爱好者,未来想从事前端开发工作.进入前端开发领域之前,作为创始人之一,创建了武汉江城时空电子商务有限责任公司.目前在海投网前端开发小组实习.热爱互联网行 ...
- webform 上传
要使用控件 - FileUpload 1.如何判断是否选中文件? FileUpload.FileName - 选中文件的文件名,如果长度不大于0,那么说明没选中任何文件 js - f.value.le ...
- liunx常用的命令
计算机网络的主要优点是能够实现资源和信息的共享,并且用户可以远程访问信息.Linux提供了一组强有力的网络命令来为用户服务,这些工具能够帮助用户登录到远程计算机上.传输文件和执行远程命令等. 本章介绍 ...
- 吐槽scala
scala可能是唯一一个编译器和IDE对代码有不同理解的语言.当你开始用scala的高级特性的时候,他们的分歧特别的大,以至于现在,intellij上的scala插件已经不敢对可能编译不通过的代码标记 ...
- Unity3d使用高通Vuforia发布IOS工程不支持64位的一些解决办法
1.将Unit升级至4.6.x或5.0.x,将Vuforia差距升级到最新版本(vuforia-unity-mobile-android-ios-4-0-105 ) 2.平台Other Setting ...
- c#控制打印机杂项
因项目中需要用到控制打印机的相关信息,此贴将网络寻找的资料做了些整理 1. C# 如何设置系统的默认打印机 using System.Runtime.InteropServices; [DllIm ...
- 推荐学习使用cocoapods和phoneGap安装的链接
phoneGap安装:http://blog.csdn.net/cwb1128/article/details/18019751 cocoaPods使用:http://blog.csdn.net/wz ...