ECMAScript基础类以及Asp.netAjax对类Object的扩展.doc_第1页
ECMAScript基础类以及Asp.netAjax对类Object的扩展.doc_第2页
ECMAScript基础类以及Asp.netAjax对类Object的扩展.doc_第3页
ECMAScript基础类以及Asp.netAjax对类Object的扩展.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ECMAScript基础类以及A Ajax对类Object的扩展“Everything is Object”,在面向对象的编程语言中谁都知道这句话,但对我来说这是一种感觉,只可意会很难言传。由于我对javascript和薄弱,所以在看A 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扩展的属性和方法,在A 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)通过调用prototypeType.getName()而获取类的名(包括命名空间)。这没有什么好说的,下面来看一下测试: Type.registerNamespace(NExplus); /define a class; NExplus.ObjectTest=function(name) this._name=name; NExplus.ObjectTtotype.getName=function() return (this._name = undefined) ? null : this._name; NExplus.ObjectTtotype.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(); a.setName(Success!); document.write(a.getName(); document.write(); document.write(Object.getTypeName(a)+) /run; NExplus.TestObject(); 运行结果:Test is success?Success!NExplus.ObjectTest 这个比较简单,微软只是为了和.NET框架更接近而扩展的Object类,我觉得这两个在开发过程中应该很少用到吧,上面的测试顺便测试一下属性J。我很想知道有没有那个好心人翻译了ECMAScript的规范文档,看英文真的好类;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论