作者:Dflying Chen (http://dflying.cnblogs.com/)
JavaScript是一门非常强大的基于对象(Object Based)的语言,但是对面向对象(Object Oriented)的支持还存在一些不足,同时JavaScript内建的类库也比较简单,甚至缺乏一切很常用的功能。ASP.NET Atlas在运行时扩展了JavaScript,大大增强了它的面向对象支持能力,并扩展了一些开发时常用的操作。
我参考了一下Atlas.js文件,总结出Atlas对JavaScript有如下扩展。某些地方有所遗漏或错误,还请各位包涵并指正。
String对象的扩展
String St***g.ltrim()
移除原String开头部分所有的空格,并返回一个新String对象。
String St***g.rtrim()
移除原String结尾部分所有的空格,并返回一个新String对象。
String St***g.trim()
移除原String开头和结尾部分所有的空格,并返回一个新String对象。
Boolean St***g.endsWidth(strEnd)
该String是否以传入的String结束。
Boolean St***g.startsWith(strStart)
该String是否以传入的String开始。
String St***g.format(args1,args2,.)
类似于C#中的St***g.Format(),被操作的String中的{n}将被代替为相应的第n个参数,并返回一个新String对象。
String St***g.removeSpaces()
移除原String中的所有空格,并返回一个新String对象。
String St***g.removeExtraSpaces()
将原String中连续的空格置换成单一的空格(包括回车),并返回一个新String对象。
String St***g.removeSpaceDelimitedString(str)
将原String中的指定单词(被空格分开的文字片断)移除,并返回一个新String对象。这个方法可以用在删除包含多个class名称DOM元素的某个class名称时候。
Array对象的扩展
void Ar***.queue(objValue)与void Ar***.add(objValue)
将指定的objValue插入到该Array的末端。
void Ar***.addRange(rangeArray)
将指定的rangeArray加入该Array的尾部。
Boolean Ar***.contains(objValue)与Boolean Ar***.exists(objValue)
返回布尔值,代表该Array是否包含objValue项目。
Array Ar***.clone()
返回该Array的一个浅拷贝副本。
void Ar***.insert(index, objValue)
将指定的objValue插入到该Array的index位置。
Object Ar***.dequeue()
移除并返回该Array中的第一个条目。
Object Ar***.removeAt(index)
移除并返回该Array中指定的index的条目。
Boolean Ar***.remove(objValue)
移除该Array中指定的objValue条目,返回布尔值代表该条目是否存在并被成功移除。
Array Ar***.parse(string)
将传入的以string表示的Array解析成Array。
void Ar***.clear()
清空该Array中的所有条目。
Integer Ar***.get_length()
返回该Array的条目数,等同于Ar***.length。
Object Ar***.getItem(index)
返回该Array中指定index的条目。
Date对象的扩展
String Da***toFormattedString(stringFormat)
依照输入的stringFormat格式化并输出该Date对象(format string太多了……懒得写了,需要的直接看Atlas.js中748-871行好了)。
Number对象的扩展
Number Nu***r.parse(string)
尝试解析传入的stirng为Number。
String Nu***r.toFormattedString(stringFormat)
依照输入的stringFormat格式化并输出该Number对象(format string还是太多了……懒得写了,需要的直接看Atlas.js中935-1024行)。
Sy***tringBuilder类
类似于C#中的StringBuilder:
var sb = new Sy***tringBuilder();
sb***pend("
面向对象的支持
定义可以被继承的基类
BaseClass = function()
{
// object
}
Ba***lass.registerClass("BaseClass");
继承类
DerivedClass = function()
{
// Call base constructors
// The 2nd argument is an array you can use to pass arguments
De***edClass.intializeBase(this,arguments);
}
De***edClass.registerClass("DerivedClass","BaseClass");
多重继承
MultipleInherit= function()
{
Mu***pleInherit.intializeBase(this,arguments); // bootstrap
// object
}
Mu***pleInherit.registerClass("MultipleInherit",["BaseClass", "DerivedClass"]);
定义可被覆写(override)的方法
BaseClass = function()
{
// object
th***initialize = function()
{
}
Ba***lass.registerBaseMethod(this,"initialize");
}
Ba***lass.registerClass("BaseClass");
调用基类被覆写的方法
DerivedClass = function()
{
De***edClass.initializeBase(this,arguments); // bootstrap
th***initialize = function()
{
De***edClass.getBaseMethod(this,"BaseClass","initialize").call(this);
// To pass arguments to base class:
// .call(this,args1,args2,args3)
}
}
De***edClass.registerClass("DerivedClass",["At***.Bindings.Base","BaseClass"]);
名称空间
registerNamespace("We***tility");
// Implement Web Utility
registerNamespace("We***erformance");
// Implement Performance
定义Enum类型 var theEnum = Ty***createEnum("name1","name2");
for (var strItems in th***um.getValues())
{
}
定义Flag类型
var theFlags = Ty***createFlags("name1",value1,"name2",value2,);
上一篇: .Net2.0读取应用程序配置节