diff options
Diffstat (limited to 'files/zh-cn/web/javascript/guide/javascript_overview/index.html')
-rw-r--r-- | files/zh-cn/web/javascript/guide/javascript_overview/index.html | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/files/zh-cn/web/javascript/guide/javascript_overview/index.html b/files/zh-cn/web/javascript/guide/javascript_overview/index.html deleted file mode 100644 index 96114a1f43..0000000000 --- a/files/zh-cn/web/javascript/guide/javascript_overview/index.html +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: JavaScript 概述 -slug: Web/JavaScript/Guide/JavaScript_Overview -tags: - - ECMAScript -translation_of: Web/JavaScript/Guide/Introduction -translation_of_original: Web/JavaScript/Guide/JavaScript_Overview ---- -<p>本节将介绍并讨论 JavaScript 的基本概念。</p> - -<h2 id="What_is_JavaScript.3F" name="What_is_JavaScript.3F">什么是 JavaScript?</h2> - -<p>JavaScript 是一种跨平台,面向对象的脚本语言。作为一种小巧且轻量级的语言,JavaScript 无意于独立运行,而是被设计为可以轻易嵌入到其它的产品和应用中,比如 Web 浏览器。在宿主环境中,JavaScript 可以被连接到环境中的对象之上,以提供对其的编程控制。</p> - -<p>核心的 JavaScript 中包含有一组核心的对象,包括 <code>Array,</code><code>Date</code> 和 <code>Math</code>,以及一组核心的语言要素,包括操作符,控制结构和语句。出于多种目的,可以通过为其增补附加的对象,对核心 JavaScript 加以扩展;例如:</p> - -<ul> - <li><em>客户端 JavaScript</em> 提供了用于控制浏览器(Navigator 或者其它浏览器)以及其中的文档对象模型(DOM)的对象,从而扩展了核心 JavaScript。例如,客户端扩展允许应用程序在 HTML 的表单中加入元素,以便响应用户事件,比如鼠标点击,表单输入和页面导航。</li> - <li><em>服务器端 JavaScript</em> 提供了服务于在服务器上运行 JavaScript 的对象,从而扩展了核心 JavaScript。例如,服务器端扩展可以允许应用程序访问关系型数据库,在应用程序的不同调用间提供信息的连续性,甚至于处理服务器之上的文件。</li> -</ul> - -<p>借由 JavaScript 的 LiveConnect 功能,您可以让 Java 和 JavaScript 间实现通讯。从 JavaScript 中,您可以创建 Java 对象并访问它们的公共方法和域。从 Java 中,也可以访问 JavaScript 的对象,属性和方法。</p> - -<p>Netscape 发明了 JavaScript 并将 JavaScript 首先用于 Netscape 浏览器中。</p> - -<h2 id="JavaScript_and_Java" name="JavaScript_and_Java">JavaScript 和 Java</h2> - -<p>JavaScript 和 Java 虽然在某些方面相似,但在另外一些方面确有着本质的不同。JavaScript 语言类似于 Java 语言,但是没有 Java 的类型静态化和强类型检查。JavaScript 大部分的表达式语法,命名规范以及基本的控制流构成都和 Java 相同。正是由于这个原因,JavaScript 才从 LiveScript 改名得来。</p> - -<p>不同于 Java 的通过声明而形成的编译时的类系统,JavaScript 支持基于少量数据类型的运行时系统,这些数据类型用以表示数值、布尔值和字符串。JavaScript 使用基于原型的对象模型,而不是更常见的基于类的对象模型。基于原型的对象模型提供了动态的继承能力,实际上,究竟什么得到继承,对于每个对象都可能不同。JavaScript 还支持无需任何特殊的声明要求的函数。函数可以作为对象的属性,当成松散类型方法(loosely typed method)来执行。</p> - -<p>相比 Java 而言,JavaScript 是一种格式相当自由的语言。无需声明所有的变量,类和方法。无需关心方法是公共的,私有的或者是保护的,也无需实现接口。变量,参数,以及返回值都无需显式的类型声明。</p> - -<p>Java 是基于类的编程语言,目标在于快速的执行和类型安全。这里的类型安全,可以是比如,你不能将 Java 的整数强制转换为对象引用,或者通过篡改 Java 字节码来达到访问私有内存区域的目的。Java 基于类的模型意味着程序完全由类及其方法构成。这些类的继承以及强类型通常需要紧密耦合的对象层级结构。这些需求使得 Java 编程远比 JavaScript 编程要复杂。</p> - -<p>相比之下,JavaScript 的设计理念源于一系列更小巧的动态类型语言,比如 HyperTalk 和 dBASE。这些脚本语言以其更为简单的语法,更专业化的内建功能,以及最小化的对象创建需求,提供了更为大众化的编程工具。</p> - -<table class="standard-table"> - <caption>表 1.1 JavaScript 与 Java 的对比</caption> - <thead> - <tr> - <th scope="col">JavaScript</th> - <th scope="col">Java</th> - </tr> - </thead> - <tbody> - <tr> - <td>面向对象的。对象的类型间没有区别。继承是基于原型机制实现的,且属性和方法可以动态地添加到任何对象之上。</td> - <td>基于类的。对象被划分为类和实例,且所有的继承是通过类的层级结构实现的。类或者实例不能动态地添加属性或方法。</td> - </tr> - <tr> - <td>变量的数据类型无需声明(动态化类型)。</td> - <td>变量的数据类型必需声明(静态化类型)。</td> - </tr> - <tr> - <td>不能自动地写入硬盘</td> - <td>不能自动地写入硬盘</td> - </tr> - </tbody> -</table> - -<p>有关 JavaScript 和 Java 之间区别的更多信息,参见 <a href="/zh-CN/docs/JavaScript/Guide/Details_of_the_Object_Model" title="JavaScript/Guide/Details of the Object Model">对象模型的细节</a>。</p> - -<h2 id="JavaScript_and_the_ECMAScript_Specification" name="JavaScript_and_the_ECMAScript_Specification">JavaScript 和 ECMAScript 规范</h2> - -<p>Netscape 发明了 JavaScript 并将 JavaScript 首先用于 Netscape 浏览器中。不过, Netscape 正在与 <a class="external" href="http://www.ecma-international.org/">Ecma International</a> — 欧洲信息和通讯标准化协会(ECMA 曾是 European Computer Manufacturers Association,既欧洲计算机制造商协会的缩写)一道致力于交付一个基于核心 JavaScript 的,标准化的,国际化的编程语言,既 ECMAScript。ECMAScript 在所有支持该标准的应用程序中具有相同的特性。其它公司可以使用开放的标准语言来开发它们的 JavaScript 实现。ECMAScript 标准在 ECMA-262 规范中加以记述。</p> - -<p>ECMA-262 标准由 <a class="external" href="http://www.iso.ch/">ISO</a>(International Organization for Standardization,既国际化标准化组织)批准为 ISO-16262。在 Mozilla 网站上可以找到 <a class="external" href="http://www-archive.mozilla.org/js/language/E262-3.pdf" title="http://www-archive.mozilla.org/js/language/E262-3.pdf">PDF 版本的 ECMA-262</a> (过时的版本)。在 <a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">Ecma International 的网站</a> 上也可以找到该规范。ECMAScript 规范没有描述文档对象模型(DOM)。该模型由 <a class="external" href="http://www.w3.org/">World Wide Web Consortium (W3C)</a> 完成标准化。DOM 定义了 HTML 文档对象呈现在脚本中的方式。</p> - -<h3 id="Relationship_between_JavaScript_Versions_and_ECMAScript_Editions" name="Relationship_between_JavaScript_Versions_and_ECMAScript_Editions">JavaScript 版本和 ECMAScript 版本之间的关系</h3> - -<p>Netscape 与 Ecma International 的紧密合作形成了 ECMAScript 规范(ECMA-262)。下面的表格描述了 JavaScript 版本和 ECMAScript 版本之间的关系。</p> - -<table class="standard-table"> - <caption>表 1.2 JavaScript 版本和 ECMAScript 版本</caption> - <thead> - <tr> - <th scope="row">JavaScript 版本</th> - <th scope="col">与 ECMAScript 版本的关系</th> - </tr> - </thead> - <tbody> - <tr> - <td>JavaScript 1.1</td> - <td>ECMA-262,第 1 版 基于 JavaScript 1.1.</td> - </tr> - <tr> - <td>JavaScript 1.2</td> - <td>ECMA-262 在 JavaScript 1.2 发布时尚未完成。由于以下原因,JavaScript 1.2 并不与 ECMA-262,第 1 版完全兼容: - <ul> - <li>Netscape 在 JavaScript 1.2 开发了一些新的特性尚未被 ECMA-262 采纳。</li> - <li>ECMA-262 添加了两项新特性:基于 Unicode 的国际化,以及跨平台的一致行为。而 JavaScript 1.2 的某些特性,例如 <code>Date</code> 对象,是依赖于平台的,且具有特定于平台的行为。</li> - </ul> - </td> - </tr> - <tr> - <td>JavaScript 1.3</td> - <td>JavaScript 1.3 完全兼容于 ECMA-262,第 1 版。<br> - JavaScript 1.3 解决了 JavaScript 1.2 与 ECMA-262 之间的不一致性,同时保留了 JavaScript 1.2 中的附加特性,除了 <code>==</code> 和 <code>!= 被修改以便顺应于</code> ECMA-262 之外。</td> - </tr> - <tr> - <td>JavaScript 1.4</td> - <td>JavaScript 1.4 完全兼容于 ECMA-262,第 1 版。<br> - ECMAScript 规范的第三版在 JavaScript 1.4 发布时尚未最终完成。</td> - </tr> - <tr> - <td>JavaScript 1.5</td> - <td>JavaScript 1.5 完全兼容于 ECMA-262,第 3 版。</td> - </tr> - </tbody> -</table> - -<div class="note"><strong>注:</strong>ECMA-262,第 2 版仅包含对第 1 版规范的细微的编辑性的改动和错误修正。由 Ecma International 的 TC39 工作组发布的最新版本为 ECMAScript 版本 5.1</div> - -<p><a href="/en-US/docs/JavaScript/Reference" title="JavaScript/Reference">JavaScript 参考</a> 中标明了语言中的哪些特性兼容于 ECMAScript。</p> - -<p>JavaScript 将总会包含某些 ECMAScript 规范中所没有的特性;JavaScript 兼容于 ECMAScript,同时提供附加特性。</p> - -<h3 id="JavaScript_Documentation_versus_the_ECMAScript_Specification" name="JavaScript_Documentation_versus_the_ECMAScript_Specification">JavaScript 文档相较于 ECMAScript 规范</h3> - -<p>ECMAScript 规范了实现 ECMAScript 的一组需求;它有助于您确定某项 JavaScript 特性是否也为其它 ECMAScript 的实现所支持。如果您想编写仅仅使用 ECMAScript 所支持的特性的代码,那么您可能需要参考 ECMAScript 规范。</p> - -<p>ECMAScript 文档的目的不在于帮助脚本程序员;关于脚本编写的信息,请参考 JavaScript 文档。</p> - -<h3 id="JavaScript_and_ECMAScript_Terminology" name="JavaScript_and_ECMAScript_Terminology">JavaScript 和 ECMAScript 术语</h3> - -<p>ECMAScript 规范使用的术语和语法对于 JavaScript 程序员而言,可能会有点陌生。尽管对语言的描述方式在 ECMAScript 中可能不尽相同,但是语言本身还是相同的。JavaScript 支持 ECMAScript 规范中所勾勒出的全部功能。</p> - -<p>JavaScript 文档描述了语言中适合于 JavaScript 程序员的方面。例如:</p> - -<ul> - <li>JavaScript 文档中没有描述全局对象,因为不会直接用到它。全局对象的属性和方法在 JavaScript 文档中被称为顶层函数和属性。</li> - <li>JavaScript 文档中没有讨论 <code>Number</code> 和 <code>String</code> 对象的无参(零个参数)构造器,因为几乎不会用到其生成的对象。无参的 <code>Number</code> 构造器返回 +0,而无参的 <code>String</code> 构造器返回 "" (空的字符串)。</li> -</ul> - -<div>{{ PreviousNext("JavaScript/Guide/About", "JavaScript/Guide/Values,_variables,_and_literals") }}</div> |