2011年01月17日

2011年01月17日
2011年01月17日
  关于ASP开发中的对象整理如下: JavaScript 本地对象、内置对象、宿主对象
  一直也搞不清“本地对象”、“内置对象”和“宿主对象”在JavaScript中到底谁是谁。分不清其中的关系,总是在自以为自己明悟了的时候发现自己其实一点都不清楚。-_-!!!
  [b]本地对象
  [/b]ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。
  看定义有些不清楚,因为还未了解何为“宿主环境”的时候就引用了“宿主环境”这个概念,着实让人有些发晕。
  不过,根据我强悍的文学功底,“宿主”一般是指寄生的生物选择的寄生体,这让我想起了“火影”里的“白”。简单说,就是用户的机器环境,包括操作系统和浏览器。
  再来看一下,“本地对象”包含哪些内容:
  Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError
  由此可以看出,简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。
  [b]内置对象
  [/b]ECMA-262 把内置对象(built-in object)定义为“由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。
  同样是“独立于宿主环境”。根据定义我们似乎很难分清“内置对象”与“本地对象”的区别。而ECMA-262 只定义了两个内置对象,即 Global 和 Math (它们也是本地对象,根据定义,每个内置对象都是本地对象)。
  如此就可以理解了。内置对象是本地对象的一种。而其包含的两种对象中,Math对象我们经常用到,可这个Global对象是啥东西呢?
  Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在,有点玩人的意思。大家要清楚,在ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。
  类似于isNaN()、parseInt()和parseFloat()方法等,看起来都是函数,而实际上,它们都是Global对象的方法。而且Global对象的方法还不止这些。有关Global对象的具体方法和属性,感兴趣的同学可以看一下这里:JavaScript 全局对象参考手册
  [b]宿主对象
  [/b] 何为“宿主对象”?主要在这个“宿主”的概念上,前面我已经介绍了“火影”,介绍了“白”。而ECMAScript中的“宿主”当然就是我们网页的运行环境,即“操作系统”和“浏览器”。
  所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。
  所有的BOM和DOM对象都是宿主对象。因为其对于不同的“宿主”环境所展示的内容不同。其实说白了就是,ECMAScript官方未定义的对象都属于宿主对象,因为其未定义的对象大多数是自己通过ECMAScript程序创建的对象。
  var oPerson = new Object;
  oPerson.name = 'simaopig';
  oPerson.age = '26';
  这里我自己定义的对象oPerson就是宿主对象。因为ECMAScript中未定义此对象,而此对象又只存在于我所运行的页面中。其貌似听起来是一个哲学命题。很奇怪我这款主题居然没有del的样式,残念。
  看评论中,Andi的理解,这个oPerson的确应该叫user-defined object,用户自定义对象。嗯。。赞一个先。
  总结
  本地对象,就是那些官方定义好了的对象。内置对象是本地对象的一种,其只包含Global对象和Math对象。而宿主对象则是那些官方未定义,你自己构建的对象加上DOM和BOM对象组成的。 [b][/b][b][/b]JavaScript 层级中的顶层对象,表示浏览器窗口。 包含客户端浏览器的信息。 包含客户端显示屏的信息。 包含了浏览器窗口访问过的 URL。 包含了当前 URL 的信息。 请点击下面的链接,学习更多有关对象及其集合、属性、方法和事件的知识。其中包含大量实例! [b][/b][b][/b]ASP 对象 ASP 组件 相关参考
  1、(面向对象和面向组件有什么不同?)
  面向对象技术的基础是封装--接口与实现分离,面向对象的核心是多态--这是接口和实现分离的更高级升华,使得在运行时可以动态根据条件来选择隐藏在接口后面的实现,面向对象的表现形式是类和继承。面向对象的主要目标是使系统对象化,良好的对象化的结果,就是系统的各部分更加清晰化,耦合度大大降低。
  面向组件技术建立在对象技术之上,它是对象技术的进一步发展,类这个概念仍然是组件技术中一个基础的概念,但是组件技术更核心的概念是接口。组件技术的主要目标是复用--粗粒度的复用,这不是类的复用,而是组件的复用,如一个dll、一个中间件,甚至一个框架。一个组件可以有一个类或多个类及其它元素(枚举、)组成,但是组件有个很明显的特征,就是它是一个独立的物理单元,经常以非源码的形式(如二进制,IL)存在。一个完整的组件中一般有一个主类,而其它的类和元素都是为了支持该主类的功能实现而存在的。为了支持这种物理独立性和粗粒度的复用,组件需要更高级的概念支撑,其中最基本的就是属性和事件,在对象的技术中曾一度困扰我们的类之间的相互依赖问题/消息传递问题,迄今为止我所知道最好的解决方案就是事件。要理解组件思想,首先要理解事件的思想和机制。
  我一直坚持以为,一个组件的外形/外貌应该是简单的、应该是清晰的、没有冗余的东西、也没有无关紧要的东西,这个外貌通过接口来描述,接口中可以发布事件、属性和方法。这三种元素就足以描述一个组件外貌的所有特征。比如,我曾经用封装的一个完成端口组件,其外貌接口中只有四个方法,三个事件,三个属性而已,而该组件的内部实现却有几千行代码。所以在设计一个组件的时候,需要做很多的权衡,哪些需要通过接口暴露出来,哪些应当作为私有实现。有时,你会处于两难的境地,因为让组件更容易使用,所以需要给出很多默认的参数,但为了使该组件更通用,你又需要暴露更多的属性可以让人设定、暴露更多的方法和事件满足更复杂的功能。你需要抉择,你需要权衡。难怪有人会说,软件的设计更像是艺术,因为艺术的美在于恰当的抉择和平衡。我的经验是,在保持低耦合度的前提下,组件的接口足以对付当前的应用就好。如果日后需要加强功能,那就重构然后增强它,这是很容易的,因为早就说了嘛,保持组件的低耦合度。
  需要说明一下的是,我们通常所说的控件(如按钮)也是一种组件,可以这么认为,控件是一种具有UI形式的组件。插件(Addin/Plugin)也是一种特殊的组件,插件的单独存在是没有意义的,它是由兼容该插件协议的框架所使用。
  最后强调一点,组件的目标是粗粒度的复用,组件的核心是接口。
  2、asp中组件与对象有什么区别
  组件包含一个或几个类库,类库里面可以包含的很多类。 对象是一个类的一个实例。 例如 Set a = Server.CreatObject("ADODB.Connection") 意思是把类库ADODB里的Connection类创建一个实例。这个实例就是a,我们说a是一个Connection对象。 组件的作者编写了包含很多类的一个或几个类库,并把他们编译成dll,这就是组件,用户把这个dll注册到系统里,就可以在ASP中使用组件的类库里的东西。 ASP中系统预定义了一些对象,类似Server、Request、Response、Application、Session、Error。这些对象一开始就存在,不需要创建。 ?? ADO 是一项微软的技术
  ?? ADO 指 ActiveX 数据对象([b]A[/b]ctiveX [b]D[/b]ata [b]O[/b]bjects)
  ?? ADO 是一个微软的 Active-X 组件
  ?? ADO 会随微软的 IIS 被自动安装
  ?? ADO 是一个访问数据库中数据的编程接口 从 ASP 文件内部访问数据库的通常途径是:
  1. 创建至数据库的 ADO 连接(ADO connection)
  2. 打开数据库连接
  3. 创建 ADO 记录集(ADO recordset)
  4. 打开记录集(recordset)
  5. 从数据集中提取你所需要的数据
  6. 关闭数据集
  7. 关闭连接
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值