网站首页 > 网络编程教程 > ASP.NET教程 > ASP.NET Atlas对JavaScript的扩展

ASP.NET Atlas对JavaScript的扩展

  • 作者:互联网
  • 时间:2009-06-30 16:09:35

作者: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("

");
sb***pendLine("a line of text");
sb***pend("
");
so***OMElem.innerHTML = sb***String();

 

面向对象的支持
定义可以被继承的基类


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,);