词条 | JavaScript王者归来 |
释义 | 《JavaScript王者归来》分为五个部分循序渐进地与读者讨论了JavaScript的方方面面,从简单的语言基础到丰富的实际应用再到深入剖析语言本质的高级话题,字里行间包含着作者多年工作中对JavaScript实践乃至程序设计思想的深入思考和总结。本书揭开了JavaScript的面纱,绕过误解和虚幻的表象,引领你探索程序王国的奥妙。它既是一本为初学者准备的入门级教程,又是一本探寻程序设计思想本源的“魔法典籍”,也是一本Web开发工程师们需要的案头参考书。 图书信息作 者: 月影 著出 版 社: 清华大学出版社 出版时间: 2008-7-1 字 数: 1347000 版 次: 1 页 数: 712 开 本: 16开 I S B N : 9787302173083 分类: 图书 >> 计算机/网络 >> 程序设计 >> Java Java Script J2EE 定价:¥82.00(现当当网68.80) 编辑推荐脚本神力与你同在,无忧版主月影力作。 这是一本寻求JavaScript解决之道的书,这是一本探寻程序设计思想本源的“魔法典籍”,从简单的语言基础到丰富的实际应用再到语言本质的深入剖析,字里行间包含作者对JavaScript实践乃至程序设计思想的深入思考和总结。脚本攻击就在黎明发起。 内容简介你手中的这本《JavaScript王者归来》不仅是一本传播知识的书,更是一本求道的书。 本书是你进入脚本王国的一把钥匙,引导你领略脚本魔法的神奇魅力。它还是一本着眼于未来改变互联网的启蒙读物,在它的引领下,你将在互联网的世界里获得你所希望得到的知识、智慧、成就和快乐。 作者简介吴亮,(网名月影),早年曾在微软亚洲研究院做过访问学生、在金蝶软件有限公司先后担任过核心开发工程师、设计师和项目经理,现任百度电子商务事业部Web开发项目经理。多年来致力于JavaScript技术和Web标准的推广,活跃于国内极有影响力的JavaScript专业网站——无忧脚本,并任JavaScript版的版主。平时热爱文学、写作和围棋。 图书目录第一部分 概论 第1章 从零开始 1.1 为什么选择JavaScript? 1.2 JavaScript的应用范围 1.3 JavaScript的版本 1.4 一些值得留意的特性 禁忌及如何突破这些禁忌 1.5 安全性和执行效率 1.6 一个例子--JavaScript编写的计算器 1.7 学习和使用JavaScript的几点建议 1.8 关于本书的其余部分 第2章 浏览器中的JavaScript 2.1 嵌入网页的可执行内容 2.2 赏心悦目的特效 2.3 使用JavaScript来与用户交互 2.4 绕开脚本陷阱 2.5 总结 第3章 开发环境和调试方法 3.1 我能用什么来编写脚本--适合编写JavaScript的文本编辑器 3.2 来自浏览器的支持 3.3 集成开发环境 3.4 调试工具--提升开发效率的利器 3.5 定位代码和调用堆栈 3.6 浏览器捕获异常 3.7 总结 第二部分 JavaScript核心 第4章 语言结构 4.1 JavaScript的基本文法 4.2 常量和变量 4.3 表达式和运算符符 4.4 控制语句 句 4.5 总结 第5章 数据类型 5.1 基本数据类型 5.2 数组和对象 5.2.1 数组 5.2.2 对象--一个构造函数的例子 5.3 函数类型--一个函数和闭包的例子 5.4 神奇的null和undefined 5.4.1 null 5.4.2 undefined--独一无二的类型 5.5 正则表达式 5.5.1 正则表达式常量 5.5.2 正则表达式对象 5.6 值类型和引用类型 5.6.1 什么是值和值的引用 5.6.2 使用值和使用引用 5.6.3 值与引用的相互转换:装箱和拆箱 5.7 类型识别与类型转换 5.7.1 运行时类型识别--两个运行的类型识别的例子 5.7.2 类型的自动转换及其例子 5.7.3 强制类型转换及其例子 5.7.4 高级用法--一个自定义类型转换的例子 5.8 警惕数值陷阱 5.8.1 困惑--浮点数的精度问题 5.8.2 误差的修正及其例子 5.9 总结 第6章 函数 6.1 函数定义和函数调用 6.1.1 函数的定义 6.1.1.1 声明式函数定义与函数表达式及其例子 6.1.1.2 JavaScript函数的奥妙——魔法代码 6.1.2 函数的调用 6.2 函数的参数 6.2.1 形参与实参 6.2.2 Arguments对象 6.2.2.1 一个使用Arguments对象检测形参的例子 6.2.2.2 一个使用Arguments对象接收任意个数参数的例子 6.2.2.3 一个使用Arguments对象模拟函数重载的例子 6.2.3 参数类型匹配--一个利用arguments实现函数重载机制的例子 6.3 函数的调用者和所有者 6.3.1 函数的调用者 6.3.2 函数的所有者--一个为函数指定所有者的例子 6.3.3 动态调用--外来的所有者 6.4 函数常量和闭包 6.4.1 匿名的函数 6.4.2 函数引用 6.4.3 函数参数和函数返回值及其例子 6.4.4 高级用法--闭包作为局部域与延迟求值 6.5 高级抽象--Function类型和函数模版 6.5.1 动态创建函数--一个利用Function实现Lambda算子的例子 6.5.2 模式--函数工厂及其实例 6.6 总结 第7章 对象 7.1 什么是对象 7.2 对象的属性和方法 7.2.1 对象的内置属性 7.2.2 为对象添加和删除属性 7.2.3 反射机制--枚举对象属性 7.3 对象的构造 7.3.1 构造函数--一个双精度浮点数封装类的例子 7.3.2 缺省构造和拷贝构造 7.3.3 对象常量 7.4 对象的销毁和存储单元的回收 7.5 JavaScript的内置对象 7.5.1 Math对象 7.5.2 Date对象--创建一个简单的日历 7.5.3 Error对象 7.5.4 其他内置对象 7.5.5 特殊的对象--全局对象与调用对象 7.6 总结 第8章 集合 8.1 数组和数组元素 8.1.1 数组的构造 8.1.2 数组常量 8.1.3 数组元素 8.2 数组对象和方法 8.2.1 查找元素 8.2.2 添加和删除元素 8.2.3 集合操作及其范例 8.2.3.1 join()方法 8.2.3.2 reverse()方法 8.2.3.3 sort()方法 8.2.3.4 concat()方法 8.2.3.5 slice()方法 8.2.3.6 splice()方法 8.2.3.7 toSgring()方法和toLocaleString()方法 8.3 哈希表 8.3.1 什么是哈希表 8.3.2 哈希表的构造 8.3.3 实现一个简单的HashTable类型 8.4 高级用法--集合操作和闭包 8.5 总结 第9章 字符串 9.1 字符串的构造 9.1.1 字符串常量 9.1.2 转义序列 9.1.3 字符串构造函数 9.2 字符串的使用 9.2.1 比较字符串 9.2.2 抽取和检索子串 9.2.3 连接拆分字符串 9.2.4 字符串的模式匹配--一个字符串格式校验的例子 9.2.5 其他方法 9.3 字符串与字符数组 9.4 字符串与文本处理--JavaScript棋谱阅读器(一) 9.4.1 需求分析--什么是棋谱和棋谱阅读器 9.4.2 系统设计--棋谱和棋盘数据的字符串描述 9.4.3 系统实现--解析和处理棋谱 9.4.4 完整的棋谱阅读器 9.5 总结 第10章 正则表达式 10.1 什么是正则表达式 10.1.1 正则表达式的概念 10.1.2 JavaScript中的正则表达式 10.2 正则表达式的规则 10.2.1 直接量字符 10.2.2 字符类和布尔操作 10.2.3 重复 10.2.4 选择、分组和引用 10.2.5 指定匹配的位置 10.2.6 标志——高级模式匹配的规则 10.3 模式匹配 10.3.1 用于模式匹配的String方法及其例子 10.3.2 用于模式匹配的RegExp方法 10.3.2.1 一个使用exec()方法从身份证号码获取生日的例子 10.3.2.2 一个使用test()方法遍历字符串的例子 10.4 关于正则表达式包装对象 10.4.1 RegExp对象——利用正则表达式实现全文检索 10.4.2 RegExp的实例属性 10.5 强大的正则表达式 10.5.1 分析正则表达式的局部 10.5.2 一个例子--强大的在线编辑器 10.5.3 构造新的文法--一个在JSVM中实现JSVM2解析器的例子 10.6 高级用法 10.7 用正则表达式处理文本 10.7.1 创建一个计价公式编辑器 10.7.1.1 需求分析--什么是计价公式编辑器 10.7.1.2 系统实现--计价公式编辑器的实现 10.7.2 创建一个同步滚动歌词播放器 10.7.2.1 需求分析--什么是同步滚动歌词播放器 10.7.2.2 系统设计与实现--处理LRC歌词 10.8 总结 第三部分 浏览器与DOM 第11章 浏览器对象 11.1 Window对象--最基本的浏览器对象 11.1.1 Window对象概览 11.1.2 Window对象的生命周期 11.1.3 Window对象的属性和方法 11.1.4 一个多窗口应用的例子 11.2 Document对象--浏览器窗口文档内容的代表 11.2.1 Document对象概览 11.2.2 动态生成的文档 11.2.3 Document对象的基本信息 11.2.4 Document对象的外观属性 11.2.5 Document子对象接口 11.2.5.1 一个遍历Anchors对象的例子 11.2.5.2 一个颠倒图片的例子 11.3 对话框和状态栏 11.3.1 创建一个简单对话框 11.3.2 其他类型的对话框 11.3.2.1 模拟对话框--创建一个窗口对话框及一个对话框阻塞进行的例子 11.3.2.2 showModalDialog和showModelessDialog--非W3C或ECMAScrip标准 11.3.3 状态栏 11.4 框架--上层的Window对象 11.4.1 多框架应用 11.4.2 框架之间的关系 11.4.3 框架的命名 11.4.4 子框架中的JavaScript 11.4.5 框架的应用--多页签显示 11.4.5.1 什么是页签 11.4.5.2 页签的实现--创建一个包含页签的页面 11.5 表单和表单对象 11.5.1 Form对象及其范例 11.5.2 定义表单元素 11.5.3 客户端表单校验及其例子 11.5.4 创建一款通用的客户端表单校验组件 11.6 其他内置对象 11.6.1 Navigator对象--浏览器总体信息的代表 11.6.2 Screen对象--提供显示器分辨率和可用颜色数量信息 11.6.3 Location对象--当前窗口中显示文档的URL的代表 11.6.4 History对象--一个有趣的对象 11.7 总结 第12章 文档对象模型 12.1 什么是DOM 12.1.1 把文档表示为树 12.1.2 树的节点 12.1.3 DOM对象的通用属性和方法 12.1.4 HTML结构和DOM对象的关系--用JavaScript通过DOM来操作HTML文档 12.2 DOM与浏览器实现 12.2.1 关于DOM HTML API 12.2.2 DOM的级别和特性 12.2.3 DOM的一致性 12.2.4 差异性--浏览器的DOM方言 12.3 一组“盒子”--DOM元素 12.3.1 嵌套的“盒子” 12.3.2 “盒子”和“盒子”内容的分类 12.4 创建和删除节点 12.4.1 构造全新的节点 12.4.2 平面展开--通过文档元素直接创建 12.4.3 回收空间--删除不用的节点 12.5 访问和操纵DOM节点 12.5.1 打开每一个盒子--遍历节点 12.5.2 弄清层级关系--父子与兄弟 12.5.3 如何搜索特定节点 12.5.4 克隆节点--一个使用cloneNode()复制表格的例子 12.5.5 移动节点及其范例 12.5.6 关于添加新行和排序的小技巧 12.6 读写数据--添加、修改和删除属性 12.7 外观与行为 12.7.1 DOM样式属性 12.7.2 控制DOM元素的显示与隐藏 12.7.3 改变颜色和大小--一个简单有趣的例子 12.7.4 改变位置--创建一个绕圆圈旋转的文字 12.7.5 编辑控制及其范例 12.7.6 改变样式及其范例 12.7.7 改变行为 12.8 XML DOM 12.8.1 什么是XML DOM 12.8.2 如何使用XML DOM--一个利用XML实现多级关联下拉选择框的例子 12.9 总结 第13章 事件处理 13.1 什么是事件 13.1.1 消息与事件响应 13.1.2 浏览器的事件驱动机制 13.2 基本事件处理 13.2.1 事件和事件类型 13.2.2 事件的绑定 13.2.3 直接调用事件处理函数 13.2.4 事件处理函数的返回值 13.2.5 带参数的事件响应及其例子 13.2.6 “this”关键字 13.3 标准事件模型 13.3.1 起泡和捕捉--浏览器的事件传播 13.3.2 事件处理函数的注册 13.3.3 把对象注册为事件处理程序 13.3.4 事件模块和事件类型 13.3.5 关于Event接口 13.3.5.1 Event接口的属性和方法 13.3.5.2 UIEvent接口的属性 13.3.5.3 MouseEvent接口的属性 13.3.5.4 MutationEvent接口 13.3.6 混合事件模型 13.3.7 合成事件 13.4 浏览器的事件处理模型实现 13.4.1 Internet Explorer事件模型 13.4.1.1 关于IE事件注册 13.4.1.2 IE Event对象的属性 13.4.1.3 IE中的事件起泡 13.4.2 Netscape 4事件模型 13.4.2.1 Netscape 4中的事件捕捉及其范例 13.4.2.2 Netscape 4 Event对象的属性 13.5 回调与用户自定义事件 13.5.1 事件处理模式--一个实现简单事件处理模式的例子 13.5.2 用户事件接口的定义 13.5.3 事件代理和事件注册--一个实现标准事件接口的例子 13.5.4 标准模式--事件分派和接收 13.6 一个例子--增强数据表格 13.6.1 什么是增强数据表格 13.6.2 一个采用两重table嵌套方式固定表头的例子 13.6.3 可变列宽的实现 13.6.4 标记行--呈现有别于其他行的背景色 13.6.5 小技巧--将代码添加到样式表 13.7 总结 第14章 级联样式表 14.1 什么是级联样式表 14.1.1 CSS样式和样式表 14.1.2 CSS的标准化 14.1.3 浏览器支持的CSS 14.2 JavaScript与CSS 14.2.1 CSS和DOM的关系 14.2.2 CSS和IE的关系 14.2.3 浏览器的CSS兼容性 14.3 控制CSS改变页面风格 14.3.1 实现结构与表现的分离及其范例 14.3.2 使用JwaScript和CSS实现页面多种风格的实时替换 14.4 总结 第15章 数据存储的脚本化 15.1 什么是cookie 15.1.1 浏览器和客户端cookie 15.1.2 cookie的属性 15.2 cookie的客户端存取 15.2.1 cookie的存储 15.2.2 cookie的读取 15.3 cookie的限制 15.4 cookie示例--让问候更加温暖 15.5 cookie对象的封装 15.6 什么是userData 15.6.1 浏览器和客户端userData 15.6.2 userData的声明 15.6.3 userData的属性和方法 15.7 userData的客户端存取 15.7.1 userData的存储和读取 15.7.2 userData的安全性 15.8 userData的限制 15.9 userData与cookie的对比 15.10 userData示例--一个利用userData实现客户端保存表单数据的例子 15.11 总结 第四部分 数据交互 第16章 同步和异步 16.1 什么是同步和异步 16.2 超时设定和时间间隔 16.3 定时器使用--侦听与拦截 16.3.1 标准模式--监视器及其范例 16.3.2 使用定时器时应当注意的问题 16.4 一个例子--漂亮的Web时钟 16.4.1 什么是Web时钟? 16.4.2 最简单的Web时钟 16.4.3 Web时钟的设计 16.4.4 完整的Web时钟源代码 16.5 总结 第17章 XML DOM和XML HTTP 17.1 什么是XML DOM对象 17.1.1 XML DOM简介 17.1.2 浏览器支持的XML DOM接口 17.1.2.1 XML DOM标准接口 17.1.2.2 IE的XML DOM组件 17.1.2.3 操作XML文档--一个使用MSXML操作XML文档的例子 17.2 XML DOM的版本兼容性--XML DOM的跨浏览器应用 17.3 XML DOM的错误处理 17.3.1 处理错误信息的ParseError对象 17.3.2 包含错误信息的文档 17.4 XML DOM操作XML文档 17.4.1 访问节点 17.4.2 创建新节点 17.4.3 移动和修改节点及其范例 17.4.4 读写节点属性和读写数据 17.4.5 保存文档 17.5 一个例子--JavaScript棋谱阅读器(二) 17.5.1 用XML描述棋谱 17.5.2 将XML棋谱转换为SGF棋谱 17.6 什么是XML HTTP对象 17.6.1 XML HTTP对象简介 17.6.2 浏览器支持的XML HTTP对象 17.7 通过XML HTTP发送请求 17.7.1 建立连接 17.7.2 发送请求 17.8 读取和设定HTTP头 17.8.1 什么是HTTP头 17.8.2 读取和设定HTTP头 17.9 服务器应答 17.9.1 同步和异步应答及其例子 17.9.2 包含应答文本内容的ResponseText 和ResponseXML 17.10 总结 第18章 Ajax简介 第19章 标准和兼容性 第20章 信息安全 第五部分 超越JavaScript 第21章 面向对象 第22章 闭包与函数式编程 第23章 模块级管理 第24章 动态构建 第25章 执行效率 25.1 为什么要讨论执行效率 25.2 封闭的代价 25.3 盒子里的流火 25.4 动态--魔鬼与天使 25.5 让代码轻舞飞扬 25.6 总结 第26章 应用框架 26.1 应用框架概览 26.2 为什么要设计应用框架 26.3 如何设计应用框架 26.4 框架的实际应用--在Silverna 2.0框架上开发的Widgets 26.5 已存在的应用框架 26.6 总结 图书章节前言你好,很高兴你能翻开这本书——《JavaScript王者归来》。. 书名中的“王者”,并不是指我这个作者,而是指你们——偶然地停下来,饶有兴趣地翻阅这本书的每一位读者。正是你们对JavaScript和Web开发的浓厚兴趣和热情,使得Web领域发生了和正在发生着翻天覆地的变化,也使得我有信心和毅力去完成这样一本厚厚的书。所以,这本书,是献给你们的,现在的和将来的JavaScript王者们! 这是一本什么样的书呢?作为作者,我很希望它能成为一本带着神奇力量的魔法书,能够将你对技术的兴趣,转化为神奇的魔力,帮助你在Web应用中写出不可思议的奇迹般的漂亮代码。当然,也许这只是我的一个美好的愿望,但是如果你是带着兴趣和热情来读这本书,并且愿意和我一起探寻JavaScript王国的奥秘,那么,这本书中一定有着能让你着迷的东西。 JavaScript是一位美丽而又难以捉摸的丛林女神,她干净利落而又变化多端,她的美丽能够带给你喜悦和幸福感,她的善变,却又让你深深地陷入困惑之中。有时候,你本能地想逃避她,内心里又离不开她。你觉得她单纯,可是你看不透她,你觉得她难以捉摸,可是她却偏偏又有着简单乖巧的一面。这样的一种语言,是充满魅力的魔法精灵,难道你就不想看清她的真面目,读懂她,让她帮助你创造出激动人心的神迹吗?来吧,翻开这本书,你的愿望能够实现。 如果你是一位刚刚接触到丰富多彩的Web世界,希望自己也能够制作出那些美丽多彩的页面的人,那么请相信我,这本书是为你准备的,通过阅读它,能够使你具备创建和驾驭属于你自己的Web国度的能力。 如果你是一位偶然地在浏览器页面代码中发现一小段包含在[script]标记之间的小脚本,并且希望弄明白它的人,那么请相信我,这本书是为你准备的,如果你有耐心读完它,你将能够自由地让你的意志在[script]标记之间飞扬。 如果你是一位迷失在无数脚本和特效之间的旅行者,那么请相信我,这本书是为你准备的。来和我一起在Web的湖泊中畅游吧,我必将带你离开迷宫和陷阱,让你看到脚下的这个王国是多么的美好,你将成为一位英明的王,而不再是无助的迷路人。 如果你是一位饱受脚本困扰的程序员,那么请相信我,这本书是为你准备的,请和我一起打开缠绕在你心头的枷锁,你会发现你手中握着的是一把神奇的利刃,这把神兵将不再割伤你自己,而是被你支配,成为在Web世界里助你开拓疆土的神器。 如果你是一位在脚本泥潭中挣扎的项目经理,那么请相信我,这本书也是为你准备的,我发誓我有能力带你离开我自己曾经挣扎过的地方,当你离开了陷阱,你将发现以前你无暇顾及的世界,原来是那么的美好。 所有翻开了这本书并喜爱着JavaScript的读者们,愿脚本神力与你们同在! 关于版权 本书中的部分内容来自于网络上公开的文章,所有有出处的文字都尽量标注出原始的出处,包括原文作者、首发网址和译者。引用为例子的代码在尽可能的情况下得到作者本人的同意。如果对这部分内容有任何疑义,请及时与作者联系。 本书中的部分文字参考或者直接引用了《JavaScript权威指南》第四版,作者David Flanagan,译者张铭泽等,O’REILLY授权机械工业出版社2006年9月出版。凡是明确引用此书内容和参考此书内容的部分,笔者也在书中尽量注明(正文中统一用【1】来表示),如果因为引用原文内容而产生的任何问题,请及时与作者联系。 书中相关章节的表格(表 XX.AA)大多数来源于《JavaScript权威指南》和互联网,在正文里不再做一一说明,如果对此有任何疑义,请及时与作者联系。 致谢.. 虽然这几年来我一直致力于推广JavaScript技术和Web标准,但是如果离开了时时刻刻支持和鼓励着我的朋友们,这样一本涉及到JavaScript方方面面的书,以我个人微不足道的力量是不可能完成的。这本书的面市凝聚着无数关心我的朋友们的心血,他们中的一些人是我的同事,另一些人是我在无忧脚本结识的伙伴,还有许许多多通过网络联系的未曾谋面的朋友。他们的每一分鼓励、每一个思想、和每一点意见都是我创作的灵感和力量的源泉,没有他们,就永远也不会有这样一本出自我手的书,在此我要向他们表示由衷的感谢。 我在金蝶工作的同事在我写这本书的时候,不但为我提出了各种建议,而且毫无怨言地分担了我的工作,体贴地为我留出足够的创作时间。在这里我要感谢jimi、张锦、小陆、阿日、建新、大琴、老丁、谢汀以及其他的和我共同奋斗的金蝶MOP团队的兄弟姐妹,谢谢你们的努力工作,谢谢你们对我的默默支持。 我创作这本书的大量灵感来源于我和无忧脚本以及CSDN论坛上的朋友们的交流。我们总是一起探讨关于脚本的深入话题,有时候达成一致意见,也有时候产生分歧甚至激烈的争执。灵感的火花总是在思维碰撞中产生的,和你们的讨论让我学到了很多东西,也直接地决定了这本书的内容组织和观点形成。在此,我要感谢所有在无忧脚本和CSDN结识的JS高手们,感谢幻宇、宝玉、梅花雪、周爱民、万常华、海浪、梅雪香、dron、stone、刘杰、biyuan、泣红亭、winter和asfman以及其他所有和我一起讨论共同进步的JSers们,谢谢你们。 我在04年从学校里毕业的时候,还对JavaScript一无所知,我自学JavaScript使用的第一本教材就是David Flanagan的《JavaScript权威指南》,如果没有这本出色的教材,我可能永远也不会对JavaScript有今天这种程度的理解。本书的基础部分的许多基本概念、观点和结论,也和《JavaScript权威指南》保持一致。在此感谢David Flanagan、Brendan Eich和《JavaScript权威指南》,没有你们的帮助,也许我现在还是一位JavaScript的门外汉。 这是我写的第一本技术类的书,在此之前,我完全没有创作教程的经验,是我的编辑陈冰鼓励我创作这本书。而且在我撰写这本书的一年里,他耐心细致地阅读了我每一章节的稿件,提出了许多意见和建议,并一次又一次地督促我改进稿件,直至最终完成。如果没有陈冰的耐心指导和帮助,我永远也写不出这样一本书。 . Web技术的飞速发展使得JavaScript这门脚本语言日渐被人们所重视,Web标准化工作的推进,也使得JavaScript变得越来越完善和优美,也变得越来越神奇。在这里我要感谢所有为Web技术发展做出贡献的技术人员,没有你们的努力,就没有JavaScript生存和发展的土壤。感谢W3C和ECMA组织孜孜不倦地进行的标准化工作,如果没有这些努力,JavaScript也许到今天仍然只是Web舞台一个不起眼的角落里的小配角。 最后,我要感谢我亲爱的父母,没有你们对我的爱,今天的我就不可能拥有我喜欢的事业,写出我喜欢的书,我也要将我的这本书献给你们。我永远爱着你们。... 吴亮 2008年1月10日 第一部分 概论第1章 从零开始 程序设计之道无远弗届,御晨风而返。——杰弗瑞·詹姆士 在人类漫漫的历史长河里,很难找到第二个由简单逻辑和抽象符号组合而成的,具有如此宏大信息量和丰富多彩内涵的领域。从某种意义上说,当你翻开这本书的时候,你已经踏入了一个任由你制定规则的未知世界。尽管你面对的仅仅是程序设计领域的冰山一角,但你将透过它,去领悟“道”的奥秘。在接下来的一段时间内,你会同我一起,掌握一种简单而优雅的神秘语言,学会如何将你的意志作用于它。这种语言中所蕴涵着的亘古之力,将为你开启通往神秘世界的大门…… 1.1 为什么选择JavaScript? 在一些人眼里,程序设计是一件神秘而浪漫的艺术工作,对他们来说,一旦选定某种编程语言,就会像一个忠贞的信徒一样坚持用它来完成任何事情,然而我不是浪漫的艺匠,大多数人也都不是,很多时候我们学习一种新技术的唯一目的,只是为了把手中的事情做得更好。所以,。当你面对一项陌生的技术时,需要问的第一个问题往往是,我为什么选择它,它对我来说,真的如我所想的那么重要吗? 好,让我们带着问题开始。 1.1.1 用户的偏好——B/S模式 如果你坚持站在专业人员的角度,你就很难理解为什么B/S模式会那么受欢迎。如果你是一个资深的程序员,有时候你甚至会对那些B/S模式的东西有一点点反感。因为在你看来,浏览器、表单、DOM和其他一切与B/S沾边的东西,大多是行为古怪而难以驾驭的。以你的经验,你会发现实现同样的交互,用B/S来做通常会比用任何一种客户端程序来做要困难得多。 如果你尝试站在用户的角度,你会发现为什么大多数最终用户对B/S模式却是如此的青睐。至少你不必去下载和安装一个额外的程序到你的电脑上,不必为反复执行安装程序而困扰,不必整天被新的升级补丁打断工作,不必理会注册表、磁盘空间和一切对普通用户来说有点头疼的概念。如果你的工作地点不是固定的办公室,你日常工作的PC也不是固定的一台或者两台,那么,B/S的意义对你而言或许比想象的还要大。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。