.NET人字拖
万丈高楼平地起,我正在努力筑地基...
随笔- 133  文章- 0  评论- 606 
博客园  社区  首页  新随笔  联系  管理  订阅 订阅

[ASP.NET Ajax] ECMAScript基础类以及Asp.net Ajax对类<Object>的扩展

“Everything is Object”,在面向对象的编程语言中谁都知道这句话,但对我来说这是一种感觉,只可意会很难言传。由于我对JavaScript和薄弱,所以在看Asp.net Ajax类库的同时也翻出了ECMAScript顺便学习学习。在.NET中所有类都是继承自Object,同样在JS中也一样说有都继承Object,因此如果对Object进行了扩展,那所有继承Object类的后代肯定会拥有祖先的血缘。

既然开始学习JavaScript那就顺便在这里提一提他的原始数据类型,在JS中有5个原始数据类型(Undefined、Null、Boolean、Number、String),可以通过typeof来判断变量和值的数据类型

1.        Undefined: 当变量被声明但没有被初始化,或函数没有明确返回一个值的时候,该变量或函数即为 Undefined 类型,是Null类型的一种特性。

2.        Null: 当一个对象的值不存在时,该对象返回null。

3.        Boolean:一看就知道,一男一女true/false,值得注意的是0不等于false,但是可以转化为false。

4.        Number:可以定义32位整型数据或64位浮点型数据。从网上的一些资料知道,浮点数在未被计算之前是以String类型存储(不知道是真是假)。当浮点类型数据很大或很小时(可以前后移动六位),将使用E表示法来表示浮点数据,最大可以存储17位数据。另外,isFinite()方法可以判断一个数值是否有限,isNaN()方法可以判断一个数据是非数字类型。通过parseInt()和parseFloat()可以将其他类型转化为数字类型,如果转化不成功则返回NaN(Not a Number)。

5.        String:这是一个唯一没有大小限制的原始类型,其他类型可以通过toString()转化为String类型,值得一提的是数字转化为String类型可以加入2.8.16作为参数已输出二进制,八进制和十六进制的字符串。

下面我们来看一下Object类型,通过var obj=new Object();可以申明一个对象。同.NET中的Object一样,它是所有类的基类。

它具有两个属性:constructor(相当于.NET中的构造函数)建议一个对象函数引用,对于Object类而言,该引用指向本地Object()方法。Prototype对象里prototype对象的一个引用值,通过这个属性可以反射每个对象中的prototype扩展的属性和方法,在Asp.net Ajax中也是利用这个属性类扩展和反射类的。

hasOwnProperty(property)—判断property属性是否存在于对象中,property数据类型为string;isPrototypeOf(object)— 判断一个对象是否是另一对象的 prototype;propertyIsEnumerable(property)— 判断所给出的属性能否使用 for 语句列举出来;toString()—返回对象的原始类型string;valueOf()—返回对象合适的原始值,对于多数类而言,返回的值和toString()相同。这些就是原始Object对象的方法,在其他类中这些方法以同样被继承。

在Asp.NET Ajax中微软为了将整个类库扩展的更适合.NET的开发人员,在原始的Object对象中扩展了两个方法:

Object.__typeName="Object";

Object.getType=function(b){

  var a=b.constructor;

  if(!a||typeof a!=="function"||!a.__typeName||a.__typeName==="Object")return Object;

  return a

};

Object.getTypeName=function(a){

  return Object.getType(a).getName()

};

从上面我们可以看到,Object.getType(type)这个静态方法可以获取一个类的对象,而Object.getTypeName(type)通过调用[prototype]Type.getName()而获取类的名(包括命名空间)。这没有什么好说的,下面来看一下测试:

        <asp:ScriptManager ID="ScriptManager1" runat="server" />

        <div>

        <script language="javascript">

        Type.registerNamespace("NExplus");

        //define a class;

        NExplus.ObjectTest=function(name){

          this._name=name;

        }

        NExplus.ObjectTest.prototype.getName=function(){

          return (this._name === undefined) ? null : this._name;

        }

        NExplus.ObjectTest.prototype.setName=function(name){

          this._name=name;

        }

        //register class;

        NExplus.ObjectTest.registerClass("NExplus.ObjectTest");

       

        NExplus.TestObject=function(){

          var a=new NExplus.ObjectTest("Test is success?");

          document.write(a.getName());

          document.write("<br/>");

          a.setName("Success!");

          document.write(a.getName());

          document.write("<br/>");

          document.write(Object.getTypeName(a)+"<br/>")

        }

        //run;

        NExplus.TestObject();

        </script>

        </div>

运行结果:

Test is success?
Success!
NExplus.ObjectTest

   这个比较简单,微软只是为了和.NET框架更接近而扩展的Object类,我觉得这两个在开发过程中应该很少用到吧,上面的测试顺便测试一下属性J。我很想知道有没有那个好心人翻译了ECMAScript的规范文档,看英文真的好类;<.顺便附上一只捆牢我的两个操作符: ||:从第一个开始,遇到有意义的返回,否则返回最后一个表达式(不一定是Boolean值); &&:从第一个开始,遇到无意义(0,null,undefined,"",false,NaN)的返回,否则返回最后一个表达式(不一定是Boolean值)。

关于作者:网魂小兵

文章出处:http://xdotnet.cnblogs.com

本文可以随意转载,摘抄等非商业用途。

为了尊重作者成果,在转载和摘抄的时候请留下作者名称和出处。

绿色通道:好文要顶关注我收藏该文与我联系
posted @ 2006-12-25 22:47 网魂小兵 阅读(400) 评论(0) 编辑 收藏
注册用户登录后才能发表评论,请 登录 或 注册,返回博客园首页。
首页博问闪存新闻园子招聘知识库
最新IT新闻:
· 最想要的Entity Framework功能
· 专访Jeffrey Richter:Windows 8是微软的重中之重
· 《福布斯》:谷歌进军硬件产品 难撼动苹果地位
· 美国空军拟最多购买1.8万台iPad 2
· 分析称专利之争让谷歌苹果两败俱伤
» 更多新闻...
最新知识库文章:
· 高级编程语言的发展历程
· 如何学习一门新的编程语言?
· 学习不同编程语言的重要性
· 为什么我喜欢富于表达性的编程语言
· 计算机专业的女生为什么要学编程
» 更多知识库文章...

China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
Copyright ©2012 网魂小兵
Name:
网魂小兵
Addr:
福建厦门
MSN:
myxbing#hotmail.com
昵称:网魂小兵
园龄:5年11个月
粉丝:23
关注:0

搜索

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论
  • 我的标签
  • 更多链接

我的标签

  • directx11(6)
  • direct3d 11(6)
  • 游戏编程(6)
  • c/c++(6)
  • vs2010(5)
  • wpf(4)
  • openssl(2)
  • direct3d坐标系(2)
  • vs2008(2)
  • xaml(2)
  • 更多

随笔分类(170)

  • AJAX(doc)(8)
  • ASP.NET(46)
  • C#3.0+(13)
  • C/C++(27)
  • CommunityServer(7)
  • Database(11)
  • Enterprise Library (7)
  • JavaScript(10)
  • ServerContols(7)
  • UML(1)
  • VC++/MFC(8)
  • WPF/SilverLight(6)
  • XNA Game(2)
  • 翻译(4)
  • 今天我当家(11)
  • 设计模式(2)

随笔档案(133)

  • 2012年2月 (3)
  • 2011年8月 (3)
  • 2011年7月 (7)
  • 2011年5月 (1)
  • 2011年4月 (2)
  • 2011年2月 (1)
  • 2010年1月 (1)
  • 2009年3月 (3)
  • 2009年1月 (8)
  • 2008年3月 (1)
  • 2008年2月 (3)
  • 2008年1月 (1)
  • 2007年11月 (4)
  • 2007年10月 (3)
  • 2007年9月 (9)
  • 2007年8月 (3)
  • 2007年7月 (2)
  • 2007年6月 (9)
  • 2007年5月 (9)
  • 2007年4月 (14)
  • 2007年3月 (6)
  • 2007年2月 (3)
  • 2007年1月 (15)
  • 2006年12月 (9)
  • 2006年11月 (2)
  • 2006年10月 (4)
  • 2006年9月 (7)

文章分类

  • Asp.Net(.NET)

I Like Links

  • ASP.NET
  • Codeplex
  • XNADevelopment

My Friend's Blog

  • 陆巍杰
  • 孙小雨
  • 探丫头
  • 网络安全&Linux

积分与排名

  • 积分 - 283912
  • 排名 - 248

最新评论

阅读排行榜

评论排行榜