JavaScript的特性中有一部分特性带来的麻烦远远超出它们的价值。其中,一些特性是因为规范很不完善,从而可能导致可移植性的问题;一些特性会导致生成难以理解和修改的代码;一些特性促使我的代码风格过于复杂且易于出错;还有一些特性就是设计错误。有时候语言的设计者也会犯错。
大多数编程语言都有精华部分和鸡肋部分。我发现如果只使用精华部分而避免使用鸡肋的部分,我可以成为一个更好的程序员。毕竟,用糟糕的部件怎么可能构建出好东西呢?
标准委员会想要移除一门语言中的缺陷部分,这几乎是不可能的,因为这样做会损害所有依赖于那些鸡肋部分的糟糕程序。除了在已存在的一大堆缺陷上堆积更多的特性,他们通常无能为力。并且新旧特性并不总是能和谐共处,可能从而产生出更多的鸡肋部分。
但是,你有权力定义你自己的子集。你完全可以基于精华部分去编写更好的程序。JavaScript中鸡肋部分的比重超出了预料。在短到令人吃惊的时间里,它从不存在发展到全球采用。它从来没有在实验室里被试用和打磨。当它还非常粗糙时,它就被直接集成到网景的Navigator 2浏览器中。随着JavaTM的小应用程序(Java applets)的失败,JavaScript变成了默认的“网页语言”。作为一门编程语言,JavaScript的流行几乎完全不受它的质量的影响。
好在JavaScript有一些非常精华的部分。JavaScript最本质的部分被深深地隐藏着,以至于多年来对它的主流观点是:JavaScript就是一个丑陋的、没用的玩具。本书的目的就是要揭示JavaScript中的精华,让大家知道它是一门杰出的动态编程语言。
或许只学习精华部分的最大好处就是你可以不用考虑鸡肋的部分。忘掉不好的模式是非常困难的。这是一个非常痛苦的工作,我们中的大多数人都会很不愿意面对。有时候,制定语言的子集是为了让学生更好的学习。但在这里,我制定的JavaScript子集是为了主专业人员更好的工作。
1.1 为什么要使用JavaScript
JavaScript是一门重要的语言,因为它是web浏览器的语言。它与浏览器的结合使它成为世界上最流行的编程语言之一。同时,它也是世界上最被轻视的编程语言之一。浏览器的API和文档对象模型(DOM)相当糟糕,导致 JavaScript遭到不公平的指责。
JavaScript是最被轻视的语言,因为它不是所谓的主流语言。如果你擅长某些主流语言,但却在一个只支持JavaScript的环境中编程,那么被迫使用JavaScript确是相当令人厌烦的。大多数人觉得没必要去先学好JavaScript,但结果他们会惊讶地发现,JavaScript跟他们宁愿使用的主流语言有很大不同,而且这些不同至为关键。
JavaScript令人惊异的事情是,在对这门语言没有太多了解,甚至对编程都没有太多了解的情况下,你也能用它来完成工作。它是一门拥有极强表达能力的语言。当你知道要做什么时,它甚至能表现得更好。编程是很困难的事情。绝不应该在对此一无所知时便开始你的工作。
1.2 分析JavaScript
JavaScript建立在一些非常好的想法和少数非常坏的想法之上。
那些非常好的想法包括函数、弱类型、动态对象和一个富有表现力的字面量表示法。那些坏的想法包括基于全局变量的编程模型。
JavaScript的函数是(主要)基于词法作用域(lexical scoping)的顶级对象。JavaScript是第一个成为主流的lambda语言。实际上,相对Java而言,JavaScript与Lisp和 Scheme有更多的共同点。它是披着C外衣的Lisp。这使得JavaScript成为一个非常强大的语言。
现今大部分编程语言中都流行要求强类型。其原理在于强类型允许编译器在编译时检测错误。我们能越早检测和修复错误,付出的代价就越小。JavaScript是一门弱类型的语言,所以 JavaScript编译器不能检测出类型错误。另一方面,弱类型其实是自由的。我们无须建立复杂的次,我永远不用做强制类型转换,也不用疲于应付类型系统以得到想要的行为。
JavaScript有非常强大的对象字面量表示法。通过列出对象的组成部分,它们就能简单地被创建出来。这种表示法产生了流行的数据交换格式——JSON。
原型继承是JavaScript中一个有争议的特性。JavaScript有一个无类别(class- free)的对象系统,在这个系统中,对象直接从其他对象继承属性。这真的很强大,但是对那些被训练使用类去创建对象的程序员们来说,原型继承是一个陌生的概念。如果你尝试对JavaScript直接应用基于类的设计模式,你将会遭受挫折。但是,如果你学习使用JavaScript的原型本质,那么你的努力将会有所回报。
JavaScript在关键思想的选择上饱受非议。虽然在大多数情况下,这些选择是合适的。但是有一个选择相当糟糕:JavaScript依赖于全局变量来进行连接。所有编译单元的所有顶级变量被撮合到一个被称为全局对象的公共命名空间中。这是一件糟糕的事情,因为全局变量是魔鬼,并且在JavaScript中它们是基础性的。
在少数情况下,我们不能忽略鸡肋的部分。另外还有一些不可避免的糟粕,当涉及这些部分时,我们会将它们指出来。如果你想学习那些鸡肋的部分及如何拙劣地使用它们,请参阅任何其他的JavaScript书籍。
JavaScript 是一门有许多差异的语言。它包含很多错误和尖锐的边角(sharp edges),所以你可能会疑惑:“为什么我要使用JavaScript?”有两个答案。第一个是你没有选择。Web已变成一个重要的应用开发平台,而 JavaScript是唯一一门所有浏览器都可以识别的语言。很不幸,Java在浏览器环境中失败了。JavaScript的蓬勃发展,恰恰说明了 JavaScript确有其过人之处。
另一个答案是,尽管JavaScript有缺陷,但是它真的很优秀。它既轻量又富有表现力。并且一旦你熟练掌握了它,就会发现函数式编程是一件很有趣的事。
但是为了更好地使用这门语言,你必须知道它的局限。我将会无情地揭示它们。不要因此而气馁。这门语言的精华部分足以弥补它鸡肋的不足。
大多数编程语言都有精华部分和鸡肋部分。我发现如果只使用精华部分而避免使用鸡肋的部分,我可以成为一个更好的程序员。毕竟,用糟糕的部件怎么可能构建出好东西呢?
标准委员会想要移除一门语言中的缺陷部分,这几乎是不可能的,因为这样做会损害所有依赖于那些鸡肋部分的糟糕程序。除了在已存在的一大堆缺陷上堆积更多的特性,他们通常无能为力。并且新旧特性并不总是能和谐共处,可能从而产生出更多的鸡肋部分。
但是,你有权力定义你自己的子集。你完全可以基于精华部分去编写更好的程序。JavaScript中鸡肋部分的比重超出了预料。在短到令人吃惊的时间里,它从不存在发展到全球采用。它从来没有在实验室里被试用和打磨。当它还非常粗糙时,它就被直接集成到网景的Navigator 2浏览器中。随着JavaTM的小应用程序(Java applets)的失败,JavaScript变成了默认的“网页语言”。作为一门编程语言,JavaScript的流行几乎完全不受它的质量的影响。
好在JavaScript有一些非常精华的部分。JavaScript最本质的部分被深深地隐藏着,以至于多年来对它的主流观点是:JavaScript就是一个丑陋的、没用的玩具。本书的目的就是要揭示JavaScript中的精华,让大家知道它是一门杰出的动态编程语言。
或许只学习精华部分的最大好处就是你可以不用考虑鸡肋的部分。忘掉不好的模式是非常困难的。这是一个非常痛苦的工作,我们中的大多数人都会很不愿意面对。有时候,制定语言的子集是为了让学生更好的学习。但在这里,我制定的JavaScript子集是为了主专业人员更好的工作。
1.1 为什么要使用JavaScript
JavaScript是一门重要的语言,因为它是web浏览器的语言。它与浏览器的结合使它成为世界上最流行的编程语言之一。同时,它也是世界上最被轻视的编程语言之一。浏览器的API和文档对象模型(DOM)相当糟糕,导致 JavaScript遭到不公平的指责。
JavaScript是最被轻视的语言,因为它不是所谓的主流语言。如果你擅长某些主流语言,但却在一个只支持JavaScript的环境中编程,那么被迫使用JavaScript确是相当令人厌烦的。大多数人觉得没必要去先学好JavaScript,但结果他们会惊讶地发现,JavaScript跟他们宁愿使用的主流语言有很大不同,而且这些不同至为关键。
JavaScript令人惊异的事情是,在对这门语言没有太多了解,甚至对编程都没有太多了解的情况下,你也能用它来完成工作。它是一门拥有极强表达能力的语言。当你知道要做什么时,它甚至能表现得更好。编程是很困难的事情。绝不应该在对此一无所知时便开始你的工作。
1.2 分析JavaScript
JavaScript建立在一些非常好的想法和少数非常坏的想法之上。
那些非常好的想法包括函数、弱类型、动态对象和一个富有表现力的字面量表示法。那些坏的想法包括基于全局变量的编程模型。
JavaScript的函数是(主要)基于词法作用域(lexical scoping)的顶级对象。JavaScript是第一个成为主流的lambda语言。实际上,相对Java而言,JavaScript与Lisp和 Scheme有更多的共同点。它是披着C外衣的Lisp。这使得JavaScript成为一个非常强大的语言。
现今大部分编程语言中都流行要求强类型。其原理在于强类型允许编译器在编译时检测错误。我们能越早检测和修复错误,付出的代价就越小。JavaScript是一门弱类型的语言,所以 JavaScript编译器不能检测出类型错误。另一方面,弱类型其实是自由的。我们无须建立复杂的次,我永远不用做强制类型转换,也不用疲于应付类型系统以得到想要的行为。
JavaScript有非常强大的对象字面量表示法。通过列出对象的组成部分,它们就能简单地被创建出来。这种表示法产生了流行的数据交换格式——JSON。
原型继承是JavaScript中一个有争议的特性。JavaScript有一个无类别(class- free)的对象系统,在这个系统中,对象直接从其他对象继承属性。这真的很强大,但是对那些被训练使用类去创建对象的程序员们来说,原型继承是一个陌生的概念。如果你尝试对JavaScript直接应用基于类的设计模式,你将会遭受挫折。但是,如果你学习使用JavaScript的原型本质,那么你的努力将会有所回报。
JavaScript在关键思想的选择上饱受非议。虽然在大多数情况下,这些选择是合适的。但是有一个选择相当糟糕:JavaScript依赖于全局变量来进行连接。所有编译单元的所有顶级变量被撮合到一个被称为全局对象的公共命名空间中。这是一件糟糕的事情,因为全局变量是魔鬼,并且在JavaScript中它们是基础性的。
在少数情况下,我们不能忽略鸡肋的部分。另外还有一些不可避免的糟粕,当涉及这些部分时,我们会将它们指出来。如果你想学习那些鸡肋的部分及如何拙劣地使用它们,请参阅任何其他的JavaScript书籍。
JavaScript 是一门有许多差异的语言。它包含很多错误和尖锐的边角(sharp edges),所以你可能会疑惑:“为什么我要使用JavaScript?”有两个答案。第一个是你没有选择。Web已变成一个重要的应用开发平台,而 JavaScript是唯一一门所有浏览器都可以识别的语言。很不幸,Java在浏览器环境中失败了。JavaScript的蓬勃发展,恰恰说明了 JavaScript确有其过人之处。
另一个答案是,尽管JavaScript有缺陷,但是它真的很优秀。它既轻量又富有表现力。并且一旦你熟练掌握了它,就会发现函数式编程是一件很有趣的事。
但是为了更好地使用这门语言,你必须知道它的局限。我将会无情地揭示它们。不要因此而气馁。这门语言的精华部分足以弥补它鸡肋的不足。
发表评论
-
仿firebug的控制台输出,兼容IE
2010-03-03 16:52 1745我离不开firefox,主要是离不开firebug,用fire ... -
Javascript作用域浅析
2010-03-03 14:34 793学习任何编程语言,都逃不过理解变量的作用域。 在javasc ... -
javascript函数
2010-03-03 14:29 762函数是指定义一次却可以调用多次或是运行多次的javascrip ... -
jquery.autocomplete 最简化
2010-03-02 14:07 909<!DOCTYPE HTML PUBLIC " ... -
jquery部分常用表达式
2010-03-02 13:55 900一、 Jquery 头标题位置 第一行 <scrip ... -
jQuery方法大全
2010-03-02 13:54 794Dom: Attribute: $("p& ... -
国家和地区的下拉列表
2010-03-02 13:53 1380<html> <head> & ... -
隐藏列表显示状态的js技巧
2010-03-02 13:51 825function hidConutry(evt){ ... -
页面右键菜单Beta2(兼容fw)
2010-03-02 13:50 788//右键菜单js代码开始 var newX,newY; ... -
表单提交前验证
2010-03-02 13:49 1190function checkForm(frm){ var ... -
用JS或jQuery访问页面内的iframe,兼容IE/FF
2010-03-02 13:48 1006用JS或jQuery访问页面内的iframe,兼容 js或者 ... -
window.open()的所有参数列表
2010-03-02 13:46 5481、最基本的弹出窗口代码】 <SCRIPT ... -
项目中的新窗口弹出
2010-03-02 13:45 663var wp=window.parent; var c ... -
一套舍不得扔的Tab方案
2010-03-02 13:40 807(function($){ $.fn.ltab ... -
区域右键方案
2010-03-02 13:33 701<!DOCTYPE html PUBLIC " ... -
Jquery1.3.2 单选按钮取值
2010-03-02 13:29 854<input type="radio" ...
相关推荐
综上所述,《JavaScript基础教程_Indix》是一本内容丰富的指南,不仅涵盖了JavaScript语言的基础知识,还深入探讨了高级主题,如Ajax和DOM操作。对于希望深入了解JavaScript及其在Web开发中应用的开发者来说,这本书...
- **编程语言支持**:大多数编程语言(如JavaScript、Python、Java)都有内置的正则表达式支持,了解各自的特点和差异有助于提高效率。 通过学习和使用“正则表达式测试器及教程”,你可以熟练掌握正则表达式,...
**JSP(Java Server Pages)实用教程第二版**是一本深入浅出的指南,旨在帮助开发者掌握JSP技术,从而创建动态、交互式的Web应用程序。本书不仅提供了理论知识,还附带了源码,使读者能够实践并理解JSP开发的每一个...
XML教程覆盖了从基础概念到高级特性的全面知识,包括实例和测验,帮助学习者理解和掌握XML。了解XML的基本原理和使用方法,对于从事Web开发或数据处理的人来说至关重要。随着技术的发展,XML将继续在数据交换和存储...
《锋利的jQuery》是一本深受开发者喜爱的jQuery教程书籍,它深入浅出地介绍了jQuery这一强大JavaScript库的使用方法。这本书的实例源码涵盖了jQuery基础到高级的应用,是学习和提升jQuery技能的重要资源。 jQuery...
《Essential TypeScript: From Beginner to Pro》是一本旨在引导初学者至专业人士的TypeScript全面教程。TypeScript是由Microsoft开发的一种强类型、静态类型的JavaScript超集,它为JavaScript开发者提供了更强大的...
jQuery,作为一款强大的JavaScript库,为网页开发提供了丰富的功能和简洁的API,使得处理DOM操作、事件处理、动画效果以及AJAX请求变得异常简单。本教程将通过PPT的形式,深入浅出地讲解jQuery的核心概念和实用技巧...
jQuery库通过一个简化的API(应用程序接口)使得JavaScript的使用变得更加便捷。引入jQuery库后,你可以使用`$`符号作为主要的入口点。例如,`$(document).ready()`函数在页面加载完成后执行代码,这是jQuery中最...
在学习和实践JavaScript图片滚动特效时,可以参考在线教程、视频课程或者阅读相关书籍,如《JavaScript高级程序设计》。同时,多动手实践,尝试修改和优化代码,这对于提升编程技能非常有帮助。记住,不断练习和探索...
本教程将全面解析正则表达式的基本概念、语法以及高级技巧,帮助你成为正则表达式的熟练使用者。 1. **基础概念** - **模式匹配**:正则表达式是描述一组字符模式的语言,用于匹配字符串中的特定序列。 - **元...
### JavaSE 基础教程 #### Java程序设计环境搭建 - **JDK的安装与配置** - **下载JDK**: 访问官方网站 [www.oracle.com](http://www.oracle.com) 下载最新版本的JDK。 - **配置JAVA_HOME环境变量**: - 设置 `...
附带的视频教程可能涵盖了从基础概念到高级技巧的全面讲解,包括实际案例演示和源码解读,这对于理论学习和实践操作都是极好的补充。通过观看这些视频,你可以看到jQuery在实际项目中的应用,进一步提升你的技能。 ...
接着,一系列以"2009-2010(1)"开头的PPT文件是按照章节进行的Java教程。例如,"chapter01Java简介.ppt"会介绍Java的历史、特点以及安装环境,是初学者入门的好材料。"chapter04(1)数组与字符串.ppt"涵盖了Java中...
例如,`i`修饰符使得匹配时不区分字母的大小写,`m`则使`^`和`$`能匹配每一行的开头和结尾,而不仅仅是整个字符串的边界。 书中还涵盖了正向前瞻和后顾断言,这些是强大的技术,可以在匹配某部分字符串时确保特定...
QML(Qt Meta Language)是Qt框架中用于构建用户界面(UI)的一种高级脚本语言。它以其声明式语法和强大的数据绑定功能而闻名,允许开发者以直观、高效的方式设计和实现美观、动态的用户界面。在"qmlapps"项目中,...
最后,书中的高级主题包括正则表达式的后向引用、条件表达式、正向前瞻和负向前瞻,这些都是实现更复杂匹配逻辑的工具。正则表达式的这些特性使得它们在诸如HTML解析、电子邮件验证、日志分析等任务中表现出色。 ...
《锋利的 jQuery 开发实例》是一本专为开发者设计的 jQuery 教程,它包含了最新的开发实践和详细的文档,旨在帮助新手快速掌握这一强大的JavaScript库。jQuery 是一个广泛使用的JavaScript框架,它简化了HTML文档...