《JavaScript面向对象编程指南(第2版)》——第1章 面向对象的JavaScript 1.1 回顾历史

简介: 自Web诞生以来,人们对于动态与响应式页面的需求便与日俱增。虽然静态的HTML文本页面在可读性方面或许会更好一些,特别是在有了CSS的辅助之后,页面排版显得更加美观了,但从另一方面来说,如果我们能让人们像在桌面上那样使用浏览器中的应用程序,事情或许会变得更有趣一些。

本节书摘来自异步社区《JavaScript面向对象编程指南(第2版)》一书中的第1章,第1.1节,作者:【加拿大】Stoyan Stefanov著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第1章 面向对象的JavaScript

自Web诞生以来,人们对于动态与响应式页面的需求便与日俱增。虽然静态的HTML文本页面在可读性方面或许会更好一些,特别是在有了CSS的辅助之后,页面排版显得更加美观了,但从另一方面来说,如果我们能让人们像在桌面上那样使用浏览器中的应用程序,事情或许会变得更有趣一些。如今,我们已能在浏览器中直接使用电子邮件、日历、电子银行、购物、绘画、游戏及文本编辑。这都要感谢一种Web编程语言—JavaScript,是它让这些Web应用成为了可能。然而,JavaScript最初也只不过是我们偶尔嵌入在HTML中的一小行代码,但如今它已经日趋成熟,并且被广泛使用。开发者们利用该编程语言的面向对象特性,实现了代码重用,并构建起了可伸缩的代码架构。

如果我们回顾一下Web开发领域这些年来的流行词汇—DHTML、Ajax、Web 2.0、HTML5,就会发现这些词背后的内涵始终没有变,依然是:HTML、CSS、JavaScript。其中HTML服务于内容,CSS服务于表现,而JavaScript则服务于行为。换句话说,JavaScript是让一切东西协同运作的粘合剂,有了它,我们才能在构建出丰富多彩的Web应用程序。

但事情远不止如此,JavaScript的应用领域并不仅仅局限于Web平台。

在JavaScript程序所能运行的多种宿主环境中,Web浏览器无疑是用得最普遍的那一种,但JavaScript也可以运行于其他环境。JavaScript可以应用于各式各样的小工具、应用扩展、以及其他软件,本书在后续章节中会一一提及。总而言之,将时间投资于学习JavaScript是一个明智的选择,因为一旦您掌握了JavaScript,就可以编写出各种适用于多种平台的不同应用,包括手机应用和服务器端程序。毕竟,如今我们要说JavaScript无所不在,那确实是一点都不夸张。

本书将从零开始,我们不会对读者的编程背景做任何假设,只需要您了解一点HTML常识即可。而且除了有一个章节用于探讨Web浏览器环境以外,本书其他部分都在纯粹地关注JavaScript语言本身。因此,您可以将在本书中学到的知识应用于所有的JavaScript环境。

下面,我们将从以下两点开始:

  • 对JavaScript背后故事的简单介绍;
  • 面向对象。

1.1 回顾历史

起初,Web页面不过是一些以静态HTML文档形式发布的科学出版物,这些文档之间只依靠一些简单的超链接(hyperlinks)绑定在一起。这可能有些难以置信,但最早的Web页面的确是不支持任何图片的,但这种情况不久便得到了改善。随后Web就越来越广受欢迎,规模也在不断增大,很快随着Web业务的快速普及和增长,网站管理者越来越希望自己所创建的Web页面能处理更多的事情。例如,他们希望网站能具有更丰富的用户交互能力,主要是能完成一些简单任务(如验证表单之类),以此节省与服务器端的信息交互。当时他们可以有两种选择:Java applets和LiveScript。其中,LiveScript是1995年由Netscape公司的Brendan Eich所开发的程序设计语言。Netscape 2.0发布之后,它被正式更名为JavaScript。

众所周知,Applets后来没落了,JavaScript则更加繁荣。这种通过在HTML中嵌入简短代码段来调整Web页面中其他静态元素的方式在网站管理者间大受好评。但没过多久,浏览器的竞争厂商Microsoft公司就发布了支持JScript的Internet Explorer(IE)3.0。JScript简直就是JavaScript的翻版,并且还在其继承之上引入了一些IE独有的特性。最终,为了使语言的实现更趋向于标准化,于是ECMAScript应运而生了。ECMA(欧洲计算机制造商协会)创建了ECMA-262标准,该标准脱离了浏览器和那些Web独有的特性,集中描述了JavaScript作为编程语言的核心部分。

大致上,JavaScript这个术语通常涵盖了以下3个部分。

  • ECMAScript——语言的核心部分(即变量,函数,循环等等):这个部分独立于浏览器之外,并可以在其他环境中使用。
  • 文档对象模型(DOM):它实际上是提供了一种与HTML、XML文档交互的方式。最初,JavaScript只能提供对页面上一部分元素的有限访问能力,主要集中在表单,超链接和图片这些元素上。后来权限逐渐被扩大,如今几乎所有元素都已经可以访问了。为此,万维网联盟(W3C)还专门创建了DOM标准。该标准是一种独立的(即它并不依赖于JavaScript)操作结构化文档的方式。
  • 浏览器对象模型(BOM):这实际上是一个与浏览器环境有关的对象集合。原本没有任何标准可言,直到HTML5诞生之后,人们才定义了一些浏览器之间通用的对象标准。

虽然本书专门有一个章节用于阐述浏览器、DOM及BOM,但大部分内容还都在讲述JavaScript语言的核心部分,您在这里所学到的JavaScript知识基本都可应用于任何JavaScript执行环境。

相关文章
|
1月前
|
JavaScript 前端开发 Java
深入JS面向对象(原型-继承)(三)
深入JS面向对象(原型-继承)
34 0
|
1天前
|
设计模式 JavaScript 前端开发
【JavaScript】深入浅出JavaScript继承机制:解密原型、原型链与面向对象实战攻略
JavaScript的继承机制基于原型链,它定义了对象属性和方法的查找规则。每个对象都有一个原型,通过原型链,对象能访问到构造函数原型上的方法。例如`Animal.prototype`上的`speak`方法可被`Animal`实例访问。原型链的尽头是`Object.prototype`,其`[[Prototype]]`为`null`。继承方式包括原型链继承(通过`Object.create`)、构造函数继承(使用`call`或`apply`)和组合继承(结合两者)。ES6的`class`语法是语法糖,但底层仍基于原型。继承选择应根据需求,理解原型链原理对JavaScript面向对象编程至关重要
18 7
【JavaScript】深入浅出JavaScript继承机制:解密原型、原型链与面向对象实战攻略
|
8天前
|
JavaScript 前端开发
深入解析JavaScript中的面向对象编程,包括对象的基本概念、创建对象的方法、继承机制以及面向对象编程的优势
【6月更文挑战第12天】本文探讨JavaScript中的面向对象编程,解释了对象的基本概念,如属性和方法,以及基于原型的结构。介绍了创建对象的四种方法:字面量、构造函数、Object.create()和ES6的class关键字。还阐述了继承机制,包括原型链和ES6的class继承,并强调了面向对象编程的代码复用和模块化优势。
20 0
|
9天前
|
前端开发 JavaScript 安全
TypeScript作为一种静态类型的JavaScript超集,其强大的类型系统和面向对象编程特性为微前端架构的实现提供了有力的支持
【6月更文挑战第11天】微前端架构借助TypeScript提升开发效率和代码可靠性。 TypeScript提供类型安全,防止微前端间通信出错;智能提示和自动补全加速跨代码库开发;重构支持简化代码更新。通过定义公共接口确保一致性,用TypeScript编写微前端以保证质量。集成到构建流程确保顺利构建打包。在微前端场景中,TypeScript是强有力的语言选择。
25 2
|
1月前
|
前端开发 JavaScript
前端 JS 经典:Class 面向对象
前端 JS 经典:Class 面向对象
14 1
|
1月前
|
JavaScript 前端开发
JavaScript 原型链继承:掌握面向对象的基础
JavaScript 原型链继承:掌握面向对象的基础
|
1月前
|
JavaScript 前端开发 API
在Node.js上使用dojo库进行面向对象web应用开发
请注意,虽然这个例子在Node.js环境中使用了Dojo,但Dojo的许多功能(例如DOM操作和AJAX请求)在Node.js环境中可能无法正常工作。因此,如果你打算在Node.js环境中使用Dojo,你可能需要查找一些适用于服务器端JavaScript的替代方案。
26 0
|
1月前
|
JavaScript 前端开发
【JavaScript技术专栏】JavaScript中的面向对象编程
【4月更文挑战第30天】本文介绍了JavaScript中的面向对象编程,包括对象的基本概念、创建对象的方法(字面量、构造函数、Object.create()和ES6的class)及继承机制(原型链和ES6的class继承)。面向对象编程通过抽象为对象,实现了代码复用和模块化,提高了程序的可读性和可维护性。
|
1月前
|
JSON JavaScript 前端开发
深入JS面向对象(原型-继承)(四)
深入JS面向对象(原型-继承)
31 0
|
1月前
|
设计模式 JavaScript 前端开发
深入JS面向对象(原型-继承)(二)
深入JS面向对象(原型-继承)
49 0