前言
JS是面向过程的语言,灵活但是编码风格不统一, 导致难于理解、维护和重用。
基于类编程是最受欢迎的面向对象编程的方式, 基于类的语言需要强类型、封装、标准代码规范。通过使开发人员遵守大量原则,保证代码的可维护和可扩展性,但是就没有了JavaScript的动态功能。
ExtJS 可以简单定义成面向对象的模式的JS语言封装的一个js框架。
类及文件
为类,命名空间和文件名使用一致的命名约定有助于保持代码的组织,结构化和可读性。
类: 类名只能包含字母和数字,除非是属于特定术语,类似Base64编码, 一般不建议使用数字。不要使用下划线,连字符或任何其他非字母数字字符。
类必须放入一个包里面, 包的层级使用 . 连接。 一个类至少有一个顶级包名。
包命名
顶级包的名字使用驼峰命名法,首字母大写,其他包使用小写字母, 类似:
MyCompany.form.action
类命名
不要使用Ext作为顶级域名(因为是Ext JS自己使用的),类的缩写也应遵循驼峰法(包含一些专用名词)。举例:‘
-使用Ext.data.JsonProxy
,不使用 Ext.data.JSONProxy
-使用MyCompany.util.HtmlParser
,不使用MyCompary.parser.HTMLParser
文件路径和命名
类的名称直接映射到存储它们的文件路径。 因此,每个文件只能有一个类。 例如:
-Ext.util.Observable
保存在 path/to/src/Ext/util/Observable.js
-MyCompany.chart.axis.Numeric
保存在path/to/src/MyCompany/chart/axis/Numeric.js
方法和变量
与类名类似,方法和变量名只能包含字母数字字符。 允许使用数字但不鼓励这些数字,除非它们属于技术术语。 请勿使用下划线,连字符或任何其他非字母数字字符。
方法和变量名应使用驼峰命名(包含一些专用名词)。
方法命名举例:
-encodeUsingMd5()
-使用getHtml()
而不使用getHTML()
使用getJsonResponse()
而不使用getJSONResponse()
变量命名举例:
- var isGoodName
- var base64Encoder
属性
类属性名称遵循驼峰命名法,除非它们是静态常量
作为常量的静态类属性全部用大写。
类的定义与创建
使用Ext.define的方法定义类, 语法:
Ext.define(className, members, onClassCreated);
members: 键值对方式的类成员集合
onClassCreated:可选的, 类创建完成的回调函数。
举例:
Ext.define('My.sample.Person', {
name: 'Unknown',
constructor: function(name) {
if (name) {
this.name = name;
}
},
eat: function(foodType) {
alert(this.name + " is eating: " + foodType);
}
});
创建一个类的实例可以使用Ext.create(), 也可以使用 new Class() 的方式。 但是建议的方式是Ext.create, 因为这种方式允许使用动态加载的机制。