今天,我们就来讲讲我们为什么会有这种观念,回顾Javascript的历史来诊断他的现状,同时通过一些片段来表明Javascript同其他开发语言的本质不同,唯有如此我们才能明白为何Javascript这么重要。
早期的迷惑
从某种程度上来讲,Javascript是Java的恶魔兄弟(Java'seviltwin)。他们同岁,都于1995年以Beta的版本出现,并且都在次年1996年推出了1.0版本。在语法上他们也很相近,从名称上来看他们就像是一家人一样。
我们第一次听说Javascript是在1995年,当时Netscape推出了Navigator2.0的Beta版本,这个版本中没有包含Javascript,但是有对于JavaApplet的支持。同时,Netscape宣布页面内嵌的语言LiveScript。这个声明并没有引起太多的注意,在当时JavaApplet是一个热门的技术,当时对于为什么Netscape要在浏览器中内嵌两种语言也不是十分清楚,难道有什么事情LiveScript能做而Java做不了的么?
2个月以后,LiveScript看到了曙光,在Navigator2.0B3中,它被重新命名为JavaScript。这次改动吸引了众多人的关注。“Oh,他肯定不能体现他的价值。”、“为什么Sun要让这么个玩具来搭Java的车?”我至今仍人为这次改名是一个失败的主意,因为他引起了无尽的困惑,很多非编程人员从来都没有明白过Java和Javascript是两个不同的东西。
改名字的另外一个影响是细微的,但是我认为改善了这个语言的接受程度。与Java的关系使这门语言看起来并不是一个全新的东西。事实上,当时Java本身都还不是十分成熟,也还没有到1.0,但是外界对于Java成熟状况的认知要比本身高出很多。例如,在1995年,时代杂志将Java选为当年的十大新产品之一。同时,市面上已经有很多关于Java的书籍。所以,当Netscape将这项技术命名为JavaScript,其意图很明显就是表明当时的Java开发团体是使用和评价JavaScript的最佳人选。
在怀疑的浪潮中,凭借JavaScript与JavaApplet的通信和控制能力,JavaScript开始出现在一些应用中。所以,那些对Java感兴趣的人开始觉得有了学习JavaScript的必要。
Javascript就像一个玩具,它是面向对象的,所有的东西都是公有的,没有封装。另外,你无法创建真正的子类,在实例变量和方法之间并没有真正的区别,这就像一个灾难。你可以在任何时候将一个变量变成一个方法。在这方面我并不是孤独的,虽然对于面向对象的细节每个人的理解都有所不同,但是Java程序员几乎无一例外的认为,JavaScript并不是一门严肃的编程语言,我们也不像用它来做些什么。
附加的伤害
在早期的时候,JavaScript并没有什么真正的技术问题,它是缓慢又充满风险的,并且只在Netscape下工作。后来IE也支持了,但并不是完全兼容。人们吹捧他用来编写页面的applets,但是它并不能检测applet的失败。它从来没有被广泛的使用过,很快他就成为了一个分母,人们仅仅用它来完成那些可靠的任务,并且避免在其他的地方使用。
什么是JavaScript能够可靠的支持的?闪动的、基于图像的视觉效果。人们开始制造一些炫目的效果。Netscape引导了这个趋势,在页面中使用令人生厌的图层干扰了人们对正常内容的浏览。那些各种各样闪动、滚动的效果让我们认为