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

本节书摘来自异步社区《JavaScript设计与开发新思维》一书中的第1章,第1.1节,作者:【美】Larry Ullman著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第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引擎)。

上一篇:地方门户网站运营策略


下一篇:Mysql彻底卸载