《JavaScript设计与开发新思维》——第1章 (重新)介绍JavaScript 1.1 什么是JavaScript

第1部分 入门

第1章 (重新)介绍JavaScript

今天的JavaScript是一种被误解的编程语言,从JavaScript所能做到的,到它不能做到的,再到JavaScript不是什么(JavaScript不是Java),关于这种当今Web的核心技术有许多的混淆。不理解一种技术的精髓,就不可能有效地使用它,所以本书的第1章提供对现代JavaScript的一个概要介绍。

本章的大部分篇幅讨论JavaScript的概念,以及它迄今为止的变化历程。接下来,读者将看到有关JavaScript版本以及浏览器支持的一些基本信息。本章以JavaScript编程时所应该采用的方法结束,这也是本书所要介绍的重点。

1.1 什么是JavaScript

JavaScript从技术上讲,是一种面向对象、弱类型的脚本语言。人们可以为这个定义加入更多的行话,但是这一定义叙述了该语言的关键特征。让我们来详细地看看这几个方面。

首先,JavaScript是一种面向对象编程(OOP)语言,而不是过程性语言,两者之间有许多不同。首先(也是最重要的),你所使用的几乎所有变量实际上都是对象。对象是一种特殊的变量类型,可以有自己的子变量(称为属性)以及函数(称作方法)。对象的属性和方法统称为对象的成员。

例如,下面是JavaScript中的一个字符串—用引号括起来的任意数量的字符:

var name = 'Larry Ullman';
字符串变量name实际上是一个String类型的对象。因为name是一个JavaScript String对象,自动有了一个length属性,表示字符串中的字符数量。对于这个特定的字符串,length的值为12(包括空格)。相似地,name自动有了几个预先定义的方法,如substring()和toUpperCase()(对于对象成员,圆括号用来区分方法与属性)。

在面向对象编程中,大量使用对象标记法(object notation)来引用对象的成员:someObject.someProperty或者someObject.someMethod()。也就是说,以name为例,name.length值为12,使用如下的代码可将字符串转换为大写:

name = name.toUpperCase(); // Now 'LARRY ULLMAN'
相反,在过程性的PHP代码中,你应该这么写:

$name = 'Larry Ullman';
$name = strtoupper($name);   // Now 'LARRY ULLMAN'

$length = strlen($name); // 12
正如你所看到的,在过程性代码中将函数应用到一个变量,变量作为参数传递给函数。而在面向对象代码中,变量自己的函数(也就是其方法)由对象自己调用。

对象(或者圆点)标记法也可以连用,以访问嵌套的属性和方法:

someObject.someProperty.someMethod()
JavaScript是面向对象语言这一事实相当重要,并且对这种语言的使用方式造成了许多影响。实际上,你最终会发现,即使是函数和数组,在JavaScript中也是对象!但是,JavaScript是一种不同类型的OOP语言,其他大部分面向对象语言都定义类,然后创建这些类的实例—对象,而JavaScript则不这么做。你最后会学到,这是因为JavaScript是基于原型而不是基于类的语言。这种不太常见的面向对象语言类型改变了JavaScript中面向对象编程的实施方式,特别是在更高级别的编程中。

注意: OOP中使用驼峰式大小写(camel-case)为变量和函数命名是一种惯例:someObject和someMethod(),而不是some_object和some_method()。

JavaScript定义的第二部分称JavaScript是一种弱类型语言,这意味着变量和数据可以很简单地从一种类型转换为另一种类型。例如,在JavaScript中,你可以创建一个数字,然后将其转换为字符串:

var cost = 2;
cost += ' dollars'; // cost现在变成如下字符串:"2 dollars"

在强类型语言中,新变量(如cost)的创建要求严格指明类型。和JavaScript非常相似的ActionScript语言就是这样声明变量并赋值的:

var cost:int = 2; // cost必须是一个整数!
而且,在强类型语言中,试图将一个数字转换为一个字符串(像在JavaScript代码中那样)将会产生一个错误。

有些程序员欣赏弱类型语言提供的灵活性,而另外一些程序员则认为弱类型导致没有条理的代码。公平地说,隐式类型转换可能产生缺陷(bug)。(正因为上述代码中的自动类型转换,JavaScript也被称为动态类型语言。)但是如果你在编程时意识到类型的转换,出现缺陷的可能性就会减小,你可以完全利用该语言的灵活性。

定义的第三部分称JavaScript是一种脚本语言,这意味着JavaScript代码通过一个实际执行这段代码的程序来运行。相比之下,C之类的语言描述的指令首先必须编译,然后执行编译好的应用程序。在本书中,几乎所有的JavaScript都在一个Web浏览器中执行,JavaScript的“可执行程序”实际上是浏览器的JavaScript引擎(不同的浏览器使用不同的JavaScript引擎)。

时间: 2024-08-21 17:26:51

《JavaScript设计与开发新思维》——第1章 (重新)介绍JavaScript 1.1 什么是JavaScript的相关文章

《JavaScript设计与开发新思维》——导读

前言 JavaScript是当今使用最广泛的编程语言之一,可以在几乎所有网页(在所有新的网页)上找到.过去的10年,在经济变化和JavaScript使用方式的扩展之间,越来越多的Web开发人员和设计人员希望了解这种语言.具有讽刺意味的是,在这些事实面前,还有少数人对JavaScript是不是一种真正的编程语言表示怀疑.而且,许多书籍仍然用传统的方式介绍JavaScript,把它当作一种用来实现零散的花招和消遣的技术. 编写本书的目的就是要解决这些问题,以一种容易理解的方式,介绍JavaScrip

《JavaScript设计与开发新思维》——1.6 JavaScript版本和浏览器支持

1.6 JavaScript版本和浏览器支持 我们已经说明过,JavaScript的核心来自于ECMAScript,ECMAScript在2009年推出了最新的第5版.JavaScript的当前版本是基于ECMAScript 5的1.8.5版本,于2010年7月推出.但是在JavaScript中编程时,版本的问题不如"在什么浏览器中可能发生什么情况"那么重要.大部分现代浏览器都支持ECMAScript 3和ECMAScript 5的一部分(ECMAScript 的版本4从未正式发布).

《JavaScript设计与开发新思维》——2.4 关键的开发方法

2.4 关键的开发方法 在查看代码之前,应该详细地讨论3种开发方法.你选择的方法(可能同时采用不止一种方法)将会影响所编写的代码,更重要的是,影响最终用户的体验. 2.4.1 功能退化 script元素为任何HTML页面添加JavaScript,与此相反的是noscript元素,它用于页面在浏览器不支持JavaScript时提供一个替代信息或者替代内容: <noscript>Your browser does not support JavaScript!</noscript> 如

《JavaScript设计与开发新思维》——2.5 拼凑一些代码

2.5 拼凑一些代码 利用已经介绍过的一些基础知识,我们继续前进,开始接触JavaScript.当然,我不期望你已经了解JavaScript-这是本书的目的-但是下一个示例阐述了JavaScript的易理解性,并且为第2部分的材料(也即正规训练)提供一些背景知识. 2.5.1 开发基本功能 作为一个简单而实用的例子,我们来创建一个登录表单,然后用JavaScript进行验证.在稍后的章节中,你将学习如何为这个表单应用Ajax,但是在这时添加Ajax可能有点过于复杂.首先创建HTML表单,该表单有

《JavaScript设计与开发新思维》——1.5 为什么说JavaScript是一种好语言

1.5 为什么说JavaScript是一种好语言 如果你正在阅读这本书,就可能对学习JavaScript有兴趣,但是如果我不表明自己对JavaScript为什么是一种好语言的看法,那就是玩忽职守.最重要和明显的理由是,JavaScript非常有用.在当今网站中常见的大量动态功能都是用JavaScript实现的.实际上,大部分这种功能都是用户所需要的,不使用JavaScript将是一种明显的疏漏.而且JavaScript还能-- 改进网站性能(例如,归功于Ajax).用于修复浏览器缺陷,例如对CS

《JavaScript设计与开发新思维》——2.7 小结

2.7 小结 在本章中,你学习了: DOCTYPE和浏览器模式: HTML5的新表单元素和新表单属性: 在HTML中使用script元素嵌入JavaScript. 在学习中你还了解了用作本书所有HTML页面基础的HTML5模板. 本章的主要部分使用现实世界中的代码,介绍了一个具体的例子:验证提交的登录表单.你学习了事件处理.创建自定义函数以及通过document.getElementById()引用页面元素的基础知识.如果在后续章节中学习新知识时对这些基础元素感到混淆,可以回过头来看看这个例子.

《JavaScript设计与开发新思维》——2.6 窃取这段JavaScript

2.6 窃取这段JavaScript 正如在本章引言中所说,你可以在没有完全了解的情况下使用JavaScript这一事实既是恩赐也是祸害.如果你在一个项目上尝试了JavaScript,而几乎不知道自己在做什么,不必尴尬:许多程序员都这么做过,甚至我也是如此.如果顺利,你能够达成自己的目标.但是更可能的是,你所使用的JavaScript不是最优或者可靠的,这就是你求助本书来掌握这门语言的原因. 最后,我要提出一个有助于学习的建议:形成定期查看在网上找到的其他JavaScript的习惯.我所指的不仅

《JavaScript设计与开发新思维》——1.3 JavaScript不是什么

1.3 JavaScript不是什么 现在你已经理解了JavaScript是什么(希望如此),我们再花点儿时间谈谈JavaScript不是什么.这也可以称作本章的"真相揭露"部分! 第一,JavaScript不是Java.这是一个常见而相当合理的混淆(毕竟两者都以"Java"开始).但是,JavaScript决不是Java.实际上,JavaScript与Java没有关系,它是另一种类型的面向对象语言,又是一种脚本语言(Java是编译型语言),两者的用途也有很大的不同

《JavaScript设计与开发新思维》——1.8 小结

1.8 小结 本章对JavaScript所做的介绍可能有些冗长,但是在开始学习这种语言时,背景是很有价值的.从本章中所得到的一些关键思路是: JavaScript是一种面向对象语言,但是是另外一种类型面向对象语言: JavaScript是弱类型的: JavaScript是ECMAScript的一个子集: Ajax很棒: 框架也非常了不起: avaScript不是一种安全措施: JavaScript仍然主要是客户端技术.

《JavaScript设计与开发新思维》——2.2 HTML5入门

2.2 HTML5入门 我写这本书的时候已经临近2012年,HTML5是一个奇妙的东西,它已经以某种形式存在了数年,但是不久之前XHTML2.0停止发展之后,HTML5才成为了Web开发的事实标准.HTML5还没有正式地标准化和发布,这意味着不管何时出现HTML5的最终实现方案,无疑都会与现在讨论的HTML5不同.通常,由于Web浏览器普遍存在而又多变,明智的人应该避开这类新事物.但是你可以采取许多方法,在两个方面上都得到最大的益处:使用一些HTML5特性,而又不破坏用户的体验.我们首先来看一个