banner.gif adie's blog
主页 博客 胭脂泪,相留醉,几时重,自是人生长恨水长东
统计
日志总数: 127
评论总数: 123
日志分类
日志归档
最近日志
最近评论
订阅
rss2.gif

atom.gif

google_rss
yc.gif 【技术评论】 阅读 4833 次

学习 JavaScript

2006-01-27 11:42:28
    很早就知道 JavaScript 这个东西了,只是一直没有机会仔细学习。以前都是从网络上这里找点代码,那里抓个函数拼凑拼凑来用,感觉不出有什么特别之处。最近有机会看了一本关于 JavaScript 的书,才发现 JavaScript 原来是如此的有趣。
    JavaScript 中最让我惊喜的就是对象的属性,所有变量的声明使用其实都是再为对象添加属性和使用对象的属性。对象的方法也是对象的一个属性,只是这个属性的值是一个函数对象而已。这使得在一个解释环境中可以去使用其他环境中的变量和函数,而且非常的方便,只需要获得那个运行环境的全局对象就可以了。这使得在一个网页窗口中运行的代码可以访问其它网页中的内容成为可能。
    JavaScript 中没有类的概念,这往往使人觉得 JavaScript 并非一种完全面向对象的语言。其实不然,因为类是用来描述对象的类型的,即描述某一类的对象有些什么属性和行为,而 JavaScript 中的对象是动态的,对象含有些什么数据,有些什么方法都是可以动态改变的,所以“类”的概念就显得没有多大意义了。JavaScript 中采用的构造函数来生成对象其实也只是一种语法上的便利罢了,对象的初始化也可以完全不用构造函数来完成的。
    JavaScript 中的对象其实是一个关联数组,即一个用字符串作为下标的数组(当然,在解释型语言中,这个数组元素的类型可以是任意类型的)。所以 object.member 也可以写成 object["member"]。这不光是一种语法上的不同写法,也是 JavaScript 做为动态语言的一种表现,使用字符串形式来访问对象的属性就可以在运行时才决定具体要访问的属性。这种采用关联数组来表示对象的方法实现起来也非常的简单,比起 C++ 中的对象模型不知要简单多少倍了。
    当然,JavaScript 中这种表示对象的方法也是有利有弊的。首先,在 JavaScript 中实现 IS-A 类型的继承关系时就显得有点笨拙,逻辑上也不够清晰。不过,在应用 JavaScript 的客户端脚本通常都是比较简单的,不会使用到复杂的继承层次,再加上 JavaScript 中可以方便的实现 HAS-A 的对象层次,所以这并不成为问题。其次,对象的方法也是用属性来实现的,这样每个对象都需要一些空间来保存这些方法函数的引用,虽然可以把这些重复的属性放到原型对象中(类似于 C++ 中的静态对象),但仍然显得有些笨拙。

▲评论

X 正在回复:
姓 名: 留下更多信息
性 别:
邮 件:
主 页:
Q Q:
来 自:
职 业:
评 论:
验 证:


Valid HTML 4.01 Strict Valid CSS!
Copyleft.A!die Software Studio.ADSS
Power by webmaster@adintr.com