javascript|游戏开发之旅-JavaScript重新介绍


javascript|游戏开发之旅-JavaScript重新介绍
【javascript|游戏开发之旅-JavaScript重新介绍】本节是第四讲的第二十五小节 , 上一节课为大家介绍了客户端数据存储包括Web Strorage, IndexDB和Cache API , 本节我们把前面的基础知识做个总结 , 并为大家介绍一些常用的开发技巧 。
重新介绍 JavaScript
为什么会有这一篇“重新介绍”呢?因为 JavaScript 堪称世界上被人误解最深的编程语言 。 虽然常被嘲为“玩具语言” , 但在它看似简洁的外衣下 , 还隐藏着强大的语言特性 。JavaScript 目前广泛应用于众多知名应用中 , 对于网页和移动开发者来说 , 深入理解 JavaScript 就尤为必要 。
我们有必要先从这门语言的历史谈起 。 在1995 年 Netscape 一位名为 Brendan Eich 的工程师创造了 JavaScript , 随后在 1996 年初 , JavaScript 首先被应用于 Netscape 2 浏览器上 。 最初的 JavaScript 名为 LiveScript , 但是因为一个糟糕的营销策略而被重新命名 , 该策略企图利用Sun Microsystem的Java语言的流行性 , 将它的名字从最初的 LiveScript 更改为 JavaScript——尽管两者之间并没有什么共同点 。 这便是之后混淆产生的根源 。
几个月后 , Microsoft 随 IE 3 发布推出了一个与之基本兼容的语言 JScript 。 又过了几个月 , Netscape 将 JavaScript 提交至 Ecma International(一个欧洲标准化组织) ,ECMAScript 标准第一版便在 1997 年诞生了 , 随后在 1999 年以 ECMAScript 第三版的形式进行了更新 , 从那之后这个标准没有发生过大的改动 。 由于委员会在语言特性的讨论上发生分歧 , ECMAScript 第四版尚未推出便被废除 , 但随后于 2009 年 12 月发布的 ECMAScript 第五版引入了第四版草案加入的许多特性 。 第六版标准已经于 2015 年 6 月发布 。
与大多数编程语言不同 , JavaScript 没有输入或输出的概念 。 它是一个在宿主环境(host environment)下运行的脚本语言 , 任何与外界沟通的机制都是由宿主环境提供的 。 浏览器是最常见的宿主环境 , 但在非常多的其他程序中也包含 JavaScript 解释器 , 如 Adobe Acrobat、Adobe Photoshop、SVG 图像、Yahoo! 的 Widget 引擎 , Node.js 之类的服务器端环境 , NoSQL 数据库(如开源的 Apache CouchDB)、嵌入式计算机 , 以及包括 GNOME (注:GNU/Linux 上最流行的 GUI 之一)在内的桌面环境等等 。
概览
JavaScript 是一种多范式的动态语言 , 它包含类型、运算符、标准内置( built-in)对象和方法 。 它的语法来源于 Java 和 C , 所以这两种语言的许多语法特性同样适用于 JavaScript 。 JavaScript 通过原型链而不是类来支持面向对象编程(有关 ES6 类的内容参考这里Classes , 有关对象原型参考见此继承与原型链) 。 JavaScript同样支持函数式编程——因为它们也是对象 , 函数也可以被保存在变量中 , 并且像其他对象一样被传递 。
先从任何编程语言都不可缺少的组成部分——“类型”开始 。 JavaScript 程序可以修改值(value) , 这些值都有各自的类型 。 JavaScript 中的类型包括:
Number(数字)String(字符串)Boolean(布尔)Function(函数)Object(对象)Symbol(ES2015 新增)
…哦 , 还有看上去有些…奇怪的 undefined(未定义)类型和 null(空)类型 。 此外还有Array(数组)类型 , 以及分别用于表示日期和正则表达式的 Date(日期)和 RegExp(正则表达式) , 这三种类型都是特殊的对象 。 严格意义上说 , Function(函数)也是一种特殊的对象 。 所以准确来说 , JavaScript 中的类型应该包括这些:
Number(数字)String(字符串)Boolean(布尔)Symbol(符号)(ES2015 新增)Object(对象)Function(函数)Array(数组)Date(日期)RegExp(正则表达式)null(空)undefined(未定义)