1. 基于对象还是面向对象?
面向对象技术是现代软件开发中的重要技术之一。面向对象变成的好处毋庸置疑,现在的主流语言如Java、C++都是面向对象的。现在的面向对象理论更多的是使用Java或C++进行描述,究其根源,在于这些语言都是传统的面向对象语言,具有面向对象理论所指明的一切特性:类、封装、继承、多态等等。
相比而言,一些动态语言如JavaSript就显得不那么面向对象——至少,在JavaScript中并没有类class这一关键字。但是,在JavaScript中并不是没有类的概念。于是有人说,JavaScript是基于对象的语言,而不是面向对象的语言。
面向对象的语言具有三个特性:封装、继承和多态,三者缺一不可;基于对象的语言通常仅仅是使用对象,其实现的是封装,并没有提供后两种特性。的确,从语法上来说,JavaScript并没有特定的语法或者在语言级别上来实现继承和多态。但是,这并不妨碍我们使用这些特性。这是因为,JavaScript是一种灵活的语言,它是相当的灵活,以至于这些并没有提供的东西,更确切的说,是没有明确的表明的东西,都是可以实现和使用的!那么,你还能说JavaScript是基于对象而不是面向对象的吗?
面向对象也是一种思想,任何语言,包括C语言,同样可以使用面向对象的思想去解决现实生活中的各种问题。到底是基于对象还是面向对象,这些概念让计算机哲学家门去争论吧——相信他们的争论最终也会和先有鸡还是先有蛋的问题一样的结果——我们所要做的,是要使用这种语言提供的机制去解决我们的问题。
2. 为什么要有JavaScript的面向对象编程?
这个问题很严肃——这取决你问题的规模和应用的范围。就像JavaEE和PHP一样:PHP能实现的东西,JavaEE都能实现,那么,为什么还要有PHP?因为JavaEE太复杂了,对于一些简单的系统,根本没有必要是使用它,也就是所谓的“杀鸡焉用牛刀”。
JavaScript主要应用于Web开发中。在传统的Web开发模式中,JavaScript起到的是一些点缀的作用,只完成很有限的功能,例如表单验证等。于是,JavaScript多被当做一种过程性语言使用,很难完成复杂的功能。而今天Web2.0的时代,Ajax大行其道,很多复杂的脚本成为其必须的组成部分。在Ajax应用中利用JavaScript面向对象编程风格,能够使逻辑更加清晰,也更有利于问题的解决。
如果你想用JavaScript编写一个库,比如ExtJS或者YUI,很难想象你的类库不使用面向对象的编程风格——否则的话,无论是对你还是对使用者的智力都将是一个前所未有的考验!或许,自从面向对象思想提出之后,已经很难有类库不使用面向对象的方式实现了,即便是C语言的库诸如gtk+,也是用C语言将面向对象的思想表现的天衣无缝。面向对象的思想对于大型程序的编写和使用具有不可替代的作用。
本系列文章将试图向读者阐述JavaScript的面向对象程序设计。尽管JavaScript中具有很多浏览器相关的概念,如document等内置对象,但是本系列将不涉及这些问题,并且将假设读者已经有JavaScript基础的语法知识等。本系列文章不会从头开始讲述JavaScript的语法,仅仅从纯粹的面向对象角度审视JavaScript,或许,你将会看到一个教程:面向对象程序设计——JavaScript语言描述。这才是本系列文章的目的。
分享到:
相关推荐
2. 面向对象编程(OOP)是一种编程范式,它使用“对象”来设计应用和计算机程序。JavaScript中的面向对象编程有几个关键特点,包括对象的创建、继承、多态等。与传统的面向对象语言不同,JavaScript中的对象是基于...
JavaScript 是一门高度抽象、面向对象的语言,广泛应用于Web开发中。它的核心特性之一就是处理对象(Object)的能力。对象不仅构成了JavaScript的基础数据结构,而且其独特的原型链机制更是实现了灵活的继承模式。本文...
在JavaScript的大世界里讨论面向对象,都要提到两点:1.JavaScript是一门基于原型的面向对象语言 2.模拟类语言的面向对象方式。对于为什么要模拟类语言的面向对象,我个人认为:某些情况下,原型模式能够提供一定...
与大多数面向对象的语言不同,JavaScript采用了一种更为简单的方式来处理数据和代码。具体表现在: 1. **数据类型的简化**:JavaScript中的数据类型非常简洁,主要包括五种基本类型(`undefined`, `null`, `boolean...
- **灵活性**:JavaScript支持多种编程范式(如函数式编程、面向对象编程等),这让开发者能够根据项目的具体需求灵活选择合适的编程方式。 #### 2. **JavaScript在人工智能领域的应用** - **目标**:本书旨在...
阅读本书唯一的前提条件,是具备对Java编程或类似面向对象语言(比如说C#)的基本理解,不需要拥有为移动设备开发软件的经验。实际上,如果你确实有这方面的经验,反倒应该忘记它们。Android是如此与众不同,因此...
“Chapter 1: Hitting the Highlights: JavaScript Basics”(第1章:触及重点:JavaScript基础)应该涵盖了JavaScript编程语言的核心概念,比如变量、数据类型、运算符、函数和控制结构,这些是学习任何编程语言的...
- 类是面向对象编程的基础,通过封装代码,提高代码复用性和模块化。 - 在ASP中使用类可以更好地组织和管理代码,提高程序的可维护性和扩展性。 通过学习这些高级ASP程序设计技术,开发者能够构建更高效、更灵活...
第10章 面向对象 154 10.1 了解类的知识 154 10.1.1 继承 155 10.1.2 抽象 155 10.1.3 多态 156 10.1.4 封装 157 10.2 对象和PHP 157 10.2.1 使用命名参数 158 10.2.2 使用继承 160 10.2.3 存取类属性 160 10.2.4 多...
- 第七章介绍了面向对象程序设计在NASAL中的应用,包括类的定义、构造函数、析构函数、继承、虚变量、封装和成员函数的回调调用。 - 第八章阐述了名字空间的概念和作用,包括可见范围、名字空间和模块空间。 - 第九...
- **特点**:C++语言不仅保留了C语言的优点,还加入了类、继承等面向对象特性,使其更加适合复杂软件系统的开发。 - **影响**:C++是许多高性能应用和系统软件开发的首选语言。 #### 五、Python语言 - **Python...
- 对诸如Ruby、Python、PHP或Java等面向对象的语言有一定经验。 - 对JavaScript处于初学阶段,并且是Node.js的新手。 - **假设的知识水平**:本书假定读者已经掌握了基础的数据类型、变量和控制结构等概念。 ####...
ASP.NET 是一项由微软推出的网站开发技术,它基于.NET Framework 构建,并且完全采用面向对象(Object-Oriented, OO)的设计思想。因此,在深入学习ASP.NET之前,具备扎实的面向对象编程基础至关重要。本文将提供一个...
- **基于对象的语言**:介绍JavaScript作为一种面向对象的语言,如何定义和使用对象。 - **数组**:解释数组的用途以及如何操作数组元素。 - **算法**:讨论几种基本算法,如排序算法等。 #### 第四部分:醉仙...
**步骤1**: 掌握一门.NET面向对象语言,推荐选择C#。 **步骤2**: 了解.NET Framework的基本知识,可以通过开发Windows Forms应用程序来熟悉.NET Framework。 - **核心概念**: 对象的内存模型、委托、事件、多线程...
在实现阶段,将采用面向对象的设计方法,分解任务为多个模块,分别进行开发。数据库设计包括实体关系模型的建立,确保数据结构合理且满足业务需求。 【论文结构】 论文主要包括以下几个部分: 1. 前言:介绍问题...