`
songofhawk
  • 浏览: 26440 次
  • 来自: ...
社区版块
存档分类
最新评论

Javascript高级程序设计 阅读笔记(1)

阅读更多

《Javascript高级程序设计》(Professional JavaScript for Web Developers),一本好书,非常适合做Web客户端开发的入门教材。

现在开发程序和以前有了很大不同,碰到新技术,都是先google一些sample code,然后照葫芦画瓢,就写起代码来了。尽管这不利于对技术的全面把握,却也是不得已的事情(哪个项目有时间等你慢慢由浅入深呢)。不过,等用了一段时间,会慢慢发现经常困扰自己的都是些基础问题,这时,就应该抽空读读书,梳理一下头脑中零散的知识了。所选的书既要全面系统地介绍相关知识,又要与实践充分结合。《Javascript高级程序设计》正是这样一本书。(怎么感觉像广告,呵呵)

下面记录一些阅读的收获,它们或者帮我弥补了知识的不足,或者印证了实践的手段,还有一些为以后进一步深入铺平了道路。

渊源

  • Javascript的鼻祖是C--,哈,有趣的名字,本想表达简洁的含义,可惜程序员们未必领情
  • Javascript诞生于Netscape,时过境迁啊
  • Javascript的语言核心标准为ECMAScript,它还有个大名鼎鼎的同胞兄弟,Flash中的ActionScript
  • DOM也是不可或缺的一部分,
  • BOM也是,尽管很不标准,有些功能还非它不可

基础

  • String类型的变量是被存放在栈(stack)里的,够惊人吧,可惜没说清到底是怎么实现的

 

  • undefined值不等同于未声明的值,不好理解吗,就是这样

 

js 代码
  1. var temp;   
  2. //temp已经声明,所以下面会显示true   
  3. if (temp==undefined) {   
  4.     alert("true");   
  5. }    
  6. //temp2还没有声明,所以下面会引发一个脚本错误   
  7. if (temp2==undefined) {   
  8.     alert("true");   
  9. }    
  10. //不过,typeof运算符却不会区分它们的差别,   
  11. //下面的代码如果运行,都会显示"undefined"   
  12. //不过,由于上面的脚本错误,这两句永远也不会运行了   
  13. alert(typeof temp);   
  14. alert(typeof temp2);   
分享到:
评论
22 楼 Ozone 2007-07-24  
还有其他的吗? 期待中
21 楼 过河卒 2007-07-19  
Gosing最早自称java为C++--
20 楼 keshin 2007-07-18  
jindw 写道
C--说的是不是java?
好像在什么地方看见过。

呵呵,这好像是个典故,说当初c++推出的时候,微软号称这是c的加强版,于是java就说,如果真是这样,那么java就是c++--,即c的加强版的同时又减了很多c++的“糟粕”
19 楼 Calmfeeling 2007-07-17  
Javascript高级程序设计这本书感觉讲的不是很透,不是很全面。个人感觉
18 楼 hideto 2007-07-16  
感觉JavaScript最好的书还是O'Reilly出的“犀牛书”:
  《JavaScript: The Definitive Guide》
17 楼 songofhawk 2007-07-08  
我倒是挺看好Javascript的未来——虽然我还是JS新手。想想当年Java刚火的时候,也是定位在Web客户端展现上,后来终于在服务器端修成正果。
16 楼 jindw 2007-07-04  
java6支持的javascript我目前还不看好。

首先javascript解释器普遍都很慢,据说比perl之类的解释型语言还要慢10倍。

说java6支持js,那只是类库层面,而java6解释js使用的是rhino。
这个引擎更是不一般的慢。

我写jsa的第一个版本的时候,直接使用了一部分packer的压缩程序(放rhino上解释)。明显感觉rhino上脚本的运行效率比浏览器上还要低一个档次。

jsi先前的版本也支持rhino,考虑到这种方式实用性太低,jsi2就放弃了服务器端的支持。

当能,性能问题都可能被解决。

但是,js1的弊端导致他并不适合编写大规模应用。js2还没有正式发布。未来还不够明朗。

此外,js的用户群还是个问题。
虽然js用户群非常庞大,但大多是前台程序员,甚至美工。
让他们去编写服务端程序可能性也不是很大。
15 楼 hax 2007-07-04  
不过js2的复杂性也提高了。我们这些js老枪是否能适应js2,还是个未知数。。。
14 楼 dlee 2007-07-04  
因为JDK6已经可以直接支持JavaScript,所以JavaScript将来有可能会走向服务器端开发。关于这方面,有一些消息:
Probos是一个基于Dojo的服务器端JavaScript开发框架。为何可以基于Dojo呢,因为Dojo在设计的时候,其核心功能就尽量设计的与运行环境无关,这使得Dojo可以运行在多种支持JavaScript的环境中。
https://phobos.dev.java.net/tutorials/usedojo/
Steve Yegge把Rails移植到JavaScript/Rhino
http://www.infoq.com/cn/news/2007/06/yegge-rhino-on-rails

JavaScript2.0规范推出并且被广泛实现(各种主流的浏览器、各种独立的JavaScript引擎)之后,JavaScript将会成长为足以与Python、Ruby相抗衡的一大脚本语言。JavaScript也将会走出DOM Scripting的范围(虽然有些专家认为JavaScript就只应该做DOM Scripting),走向广阔的多的开发领域。所以我对JavaScript的未来是很乐观的,甚至我觉得Python、Ruby、JavaScript这些动态类型的脚本语言都要比Java/C#这些静态类型的语言更有前途,至少从Web开发的角度来说肯定是这样。

与其他几种脚本语言相比,JavaScript的优势在于它是目前唯一完全标准化的语言,它基于真正的Web标准——ECMAScript/JavaScript。JavaScript得到了广泛理解和使用,学习JavaScript的门槛非常低(当然,要成为真正的高手也要下很多功夫),在与C系列语言(C/C++/Java/C#...)完全不同的实现机制之上还涂上一层C系列语言的语法来引诱C系列语言开发者。

JavaScript 1.x代表了面向对象语言的一个分支——使用prototype来实现面向对象,这是一种与使用类和继承来实现面向对象非常不同的思路,很多人认为以这种方式实现面向对象更加灵活。在JavaScript2.0中,又添加了对使用类和继承来实现面向对象的全面支持。JavaScript还支持以FP方式做开发,因为函数在JavaScript中是一等公民,可以作为参数来传递。以前有些Java/C#开发者傲慢地以为JavaScript很落后,这是很无知的体现,其实JavaScript的潜力还远远没有被充分挖掘出来。JavaScript2.0出来并且被广泛实现后,JavaScript简直就可以包打天下了。
13 楼 ss19811029 2007-07-03  
呵呵,我觉的来源不重要,重要的是js将来的去向....
12 楼 songofhawk 2007-07-01  
但http://www.nombas.com/确实无法访问,所以hax同学说“失落了”。
11 楼 songofhawk 2007-07-01  
呵呵,谢谢各位朋友的指点,特别是hax和bluepower同学。
译书原文是这样:
大概在1992年,一家称作Nombas的公司开始开发一种叫做C减减(C-minus-minus,简称Cmm)的嵌入式脚本语言。Cmm背后的理念很简单:一个足够强大可以替代宏操作(macro)的脚本语言,同时保持与C(和C++)足够的相似性,以便开发人员能很快学会。这个脚本语言捆绑在一个叫做CEnvi的共享软件产品中,它首次向开发人员展示了这种语言的威力。Nombas最终把Cmm的名字改成了ScriptEase,原因是后面的部分(mm)听起来过于“消极”,同时字母C“令人害怕”(http://www.nombas.com/us/scripting/history.htm)。现在ScriptEase已经成为了Nombas产品背后的主要驱动力。当Netscape Navigator崭露头角时,Nombas开发了一个可以嵌入网页中的CEnvi的版本。这些早期的试验称为Espresso Page(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端脚本语言。而Nombas丝毫没有料到它的理念将会成为因特网的一块重要基石。

当网上冲浪越来越流行时,对于开发客户端脚本的需求也逐渐增大。此时,大部分因特网用户还仅仅通过28.8kbit/s的调制解调器来连接到网络,即便这时网页已经不断地变得更大和更复杂。而更加加剧用户痛苦的是,仅仅为了简单的表单有效性验证,就要与服务器端进行多次的往返交互。设想一下,用户填完一个表单,点击提交按钮,等待了30秒钟的处理后,看到的却是一条告诉你忘记填写一个必要的字段。那时正处于技术革新最前沿的Netscape,开始认真考虑一种开发客户端脚本语言来解决简单的处理问题。

当时工作于Netscape的Brendan Eich,开始着手为即将在1995年发行的Netscape Navigator 2.0开发一个称之为LiveScript的脚本语言,当时的目的是同时在浏览器和服务器(本来要叫它LiveWire的)端使用它。Netscape与Sun公司联手及时完成LiveScript实现。就在Netscape Navigator 2.0即将正式发布前,Netscape将其更名为JavaScript,目的是为了利用Java这个因特网时髦词汇。Netspace的赌注最终得到回报,JavaScript从此变成了因特网的必备组件。
10 楼 legend 2007-06-28  
hax 太厉害了!连 javascript 的祖坟都刨出来了!佩服佩服!
9 楼 hax 2007-06-27  
我在一个俄文网站上找到cenvi的化石了。可以看出当时的cmm真的只是c的脚本版,看不出与未来的js有多少亲缘关系的。至于后来的scriptease既然要变成ecma的实现,那肯定与cmm根本扯不上了,那改名之说总也有点扯淡了(扯淡的内容因为在nombas失落的网站上,所以不可考了)。

大体的情况实际上可以推断:说是说融入了ecmascript,实际上就是nombas抛弃了原来的cmm,转而皈依了ecmascript。

hax 写道
现在的cminusminus似乎并非该文所说的c--。

按照文中所说,cenvi是最早展现了client script的想法。而且后来scriptease也成了ecmascript的一个实现。但只能说nombas是先驱。

而且公认javascript确系be创造,我们现在又看不到最早的cenvi的样子(nombas似乎被人收购了,现在网站都没了),不知道到底它与js有多少差别。所以难以冠鼻祖之名。

8 楼 hax 2007-06-27  
现在的cminusminus似乎并非该文所说的c--。

按照文中所说,cenvi是最早展现了client script的想法。而且后来scriptease也成了ecmascript的一个实现。但只能说nombas是先驱。

而且公认javascript确系be创造,我们现在又看不到最早的cenvi的样子(nombas似乎被人收购了,现在网站都没了),不知道到底它与js有多少差别。所以难以冠鼻祖之名。

最后附上唯一残留之遗迹:

From: brent@shore.net (Brent Noorda)
Newsgroups: comp.infosystems.www.authoring.html
Subject: Espresso Pages: Script-enhanced Netscape
Date: 27 Nov 1995 15:45:04 GMT


This weekend we put up the Espresso Pages, at http://www.nombas.com/, to
give a preview of how Web pages can change when they become script-enabled
via a powerful, secure script language. The pages demonstrate a
bouncy-button
game, real-time verification of user input into forms, an animated
stick-figure,
and a way cool flashback into the psychadellic sixties.


The Espresso Pages are just a demo of what will happen when browser embed
the Cmm language, but for now these demos use our CEnvi for Windows
application as a helper. Instructions are on the page for how to configure,
including a download of a demo of the Cmm interpreter. For now, these demos
only work if you have a 16-bit Netscape Navigator under Windows or
Windows-95.


I look forward to any comments about the Espresso Pages.


We'll be adding more demos soon to show cooperating between
script-enhanced pages, script-enabled browsers, and Cmm-
enhanced CGI scripts. HTML authors and solution-providers, please
contact us at Nombas to tell us how we may help provide tools. (Also,
these are our first attempts at pages, so let us know how we screwed
it up; thanks)


Brent Noorda, President
Nombas, Inc.
brent@nombas.com


7 楼 sp42 2007-06-27  
是的 据说JavaScript=C+Lisp
6 楼 dogstar 2007-06-27  
javascript的祖先应该是lisp,用c的语法包装过的lisp。
5 楼 bluepower 2007-06-27  
hax 写道
这本书好像太老了一点。


这是本好书,而且并不老。

英文版出版时间:05年4月22日 by Wrox Publisher
中文版出版时间:06年9月15日 by 人民邮电出版社

hax 写道
js的祖先不是c。除非你认为猴子是人类的祖先。


LZ说的不是C,是C--

摘了几句相关的原文如下:
Around 1992, a company called Nombas began developing an embedded scripting language called C-minus-minus(Cmm for short).
The idea behind Cmm was simple: a scripting language powerful enough to replace macros, but still similar enough to C(and C++) that developers could learn it quickly.



4 楼 jindw 2007-06-27  
C--说的是不是java?
好像在什么地方看见过。
3 楼 sp42 2007-06-27  
据说 js=c+lisp

相关推荐

    javascript 高级程序设计 读书笔记(3)

    《JavaScript高级程序设计》是JavaScript开发者的经典教材,它深入探讨了这门语言的核心概念和技术。这篇读书笔记主要聚焦在第三部分,这部分通常涵盖了更高级的主题,如对象、原型、闭包以及模块化等。结合提供的...

    JavaScript高级程序设计2,学习笔记---第一篇

    JavaScript高级程序设计是每个前端开发者深入理解这门语言所必经之路。这篇学习笔记将带你探索JavaScript的核心概念,包括变量、数据类型、控制流、函数、对象和类等,这些都是构建复杂应用程序的基础。 首先,我们...

    javascript高级程序设计笔记第一章.docx

    本文将深入探讨在"javascript高级程序设计笔记第一章"中提及的关键概念。 首先,ECMAScript(通常简称为ES)是JavaScript的标准化规范,由ECMA国际维护。在ECMAScript中,存在五种基本数据类型:Undefined、Null、...

    HTML5高级程序设计学习笔记

    ### HTML5高级程序设计学习笔记 #### 一、HTML5新增结构标签 在HTML5中,为了更好地组织页面内容并增强语义性,引入了一系列新的结构标签,这些标签不仅能够帮助开发者更清晰地定义页面的不同部分,同时也为搜索...

    javaScript高级程序设计笔记.doc

    javaScript高级程序设计笔记.doc

    javascript高级程序设计笔记

    javacript高级程序设计的个人学习总结,涉及到很多javascript的高级特性

    JavaScript高级程序设计 学习笔记之DOM基础(五)

    这篇"JavaScript高级程序设计 DOM基础笔记.doc"文档可能详细介绍了以上这些概念,并可能包含实例和实践建议,有助于深入理解DOM操作和JavaScript在网页中的作用。通过学习和实践,开发者能更好地控制网页行为,实现...

    javaScript 高级程序设计 第1章 JavaScript简介

    javaScript 高级程序设计 第1章 JavaScript简介笔记

    《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型

    在《JavaScript高级程序设计》中,对ECMAScript中引用类型的相关知识点进行了详细阐述。引用类型在JavaScript中是非常重要的概念,它们相较于原始类型而言,在内存中占有较大的比重,并且其行为也更为复杂。以下是对...

    Javascript高级程序设计---笔记.pdf

    这份笔记主要基于《JavaScript高级程序设计》这本书,旨在深入探讨ECMAScript、DOM操作以及各种编程特性。 首先,ECMAScript是JavaScript的基础,它定义了语言的语法和基本对象。学习纪要中提到的ECMAScript部分...

    Javascript高级程序设计---笔记归类.pdf

    这份“JavaScript高级程序设计---笔记归类.pdf”文档显然详细整理了JavaScript的关键知识点,包括ECMAScript规范、DOM操作、数据类型、运算符、流程控制语句、函数以及面向对象编程等。 首先,ECMAScript是...

    JavaScript高级程序设计 阅读笔记(十五) 浏览器中的JavaScript

    Window对象 窗口操作 Window对象对操作浏览器窗口非常有用,开发者可以移动或调整浏览器窗口的大小。可用四种方法实现这些操作: moveBy(dx,dy):把浏览器窗口相对当前位置水平移动dx个像素,垂直移动dy个像素。...

    JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现

    JavaScript中的继承机制是其面向对象编程的关键特性,允许一个对象或类从另一个对象或类获取并复用属性和方法。本文将深入探讨JavaScript中的五种主要继承实现方式:对象冒充、call()、apply()、原型链以及混合方式...

    JavaScript高级程序设计 阅读笔记(十三) js定义类或对象

    JavaScript 中定义类或对象的方式 JavaScript 中定义类或对象有多种方式,包括工厂方式、构造函数方式、原型方式、混合的构造函数/原型方式和动态原型方法。 工厂方式是通过创建并返回特定类型的对象的函数来定义...

    毕设&课设&项目&实训-基于JavaScript高级程序设计第四版的学习笔记.zip

    这本“JavaScript高级程序设计第四版”的学习笔记涵盖了JavaScript的各个方面,旨在帮助学生、开发者以及对编程感兴趣的人深入理解这一强大的脚本语言。这份笔记是针对毕设、课设、项目实训等实践性学习场景编写的,...

Global site tag (gtag.js) - Google Analytics