广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript是OOP语言吗
  • 715
分享到

JavaScript是OOP语言吗

2024-04-02 19:04:59 715人浏览 薄情痞子
摘要

本篇内容主要讲解“javascript是OOP语言吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript是OOP语言吗”吧!什么是OOP?OOP模

本篇内容主要讲解“javascript是OOP语言吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript是OOP语言吗”吧!

什么是OOP?

OOP模式没有正式的标准规范。没有一个技术文档定义了什么是OOP,什么不是OOP。OOP定义主要基于早期研究人员,如Kristen Nygaard,  Alan Kays, William  Cook等人发表的论文中的常识。已经有很多人尝试定义OOP以及一个可广泛接受的定义来对编程语言进行分类,因为面向对象基于两个要求:

通过对象建模问题的能力。

支持一些准许模块化和代码重用的原则。

为了满足***个要求,这种语言必须使开发人员能够使用对象来描述现实并定义对象之间的关系,如下所示:

  • 关联:对象引用另一个独立对象的能力。

  • 聚合:对象嵌入一个或多个独立对象的能力。

  • 组合:对象嵌入一个或多个依赖对象的能力。

通常,如果语言支持以下原则,则能满足第二个要求:

  • 封装:专注于数据和操纵代码的单一实体,并隐藏其内部细节的能力。

  • 继承:一个对象从一个或多个其他对象获取某些或所有要素的机制。

  • 多态:根据数据类型或结构不同地处理对象的能力。

满足这些要求的语言我们通常将其归类为为面向对象的。

JavaScript和OOP

所以现在我们知道OOP语言应该是什么样子的了。那么,我们可以证明JavaScript是一种OOP语言吗?咱们试试吧。

我们知道,JavaScript对象支持关联,聚合和组合的能力并不强劲。请看以下代码:

var johnSmith = {  firstName: "John",  lastName: "Smith",  address: { //Composition  street: "123 Duncannon Street",  city: "London",  country: "United Kingdom"  } }; var nickSmith = {  firstName: "Nick",  lastName: "Smith",  address: { //Composition  street: "321 Oxford Street",  city: "London",  country: "United Kingdom"  } }; johnSmith.parent = nickSmith; //Association var company = {  name: "ACME Inc.",  employees: [] }; //Aggregation company.employees.push(johnSmith); company.employees.push(nickSmith);

在上面的代码中,你可以找到一个组合(address属性)的示例,一个关联(parent属性)的示例和一个聚合(employees属性)的示例。

至于封装,JavaScript对象是支持数据和函数的实体,但它们没有高级的本地支持来隐藏内部细节。JavaScript对象不关心隐私。如果不谨慎的话,所有的属性和方法都可以公开访问。但是,我们可以应用若干技术来定义对象的内部状态,并保护对象以防外部访问:使用getter和setter来利用闭包。

通过所谓的原型继承,JavaScript在基本层中支持继承。即使有些开发人员认为它有点简单,但JavaScript的继承机制是完全有效的,并允许你得到与大多数公认的OOP语言相同的结果。任凭你怎么想,JavaScript有一个机制,通过这个机制“一个对象从一个或多个其他对象获取一些或所有的功能”,这就是继承。

有多态性的挑战似乎更加困难,因为许多人把这个概念与数据类型联系起来。实际上,多态性涉及编程语言的许多方面,并且不仅仅是与OOP语言有关。通常它涉及诸如泛型、重载和结构子类型等条目。所有这些对于一种“简单”和弱类型的语言——JavaScript——来说似乎不堪重负。然而事实并非如此:在JavaScript中,我们可以通过若干方式实现不同类型的多态,也许我们在不知不觉中已经做过很多次了。

没有类的OOP

“好吧,但话说回来,JavaScript没有类。”

许多开发人员认为JavaScript缺乏类的概念,而没有将JavaScript视为一种真正的面向对象的语言,因为它不强制符合OOP原则。

但是,我们可以看到,在非正式的定义中,并没有明确提及类。诚然,对象需要特性和原理。但类并非真正的要求,只是有时,类是一种抽象具有公共属性的对象集的简便方法而已。因此,即使一种语言的支持对象没有类,它也可以是面向对象的语言,例如JavaScript。

此外,OOP原则的目的旨在得到支持。为了在语言中进行编程,OOP原则不应该是强制规定的。开发人员可以选择使用允许他创建面向对象代码的构造,也可以选择不使用。许多人批评JavaScript是因为开发人员可以编写违反OOP原则的代码。但这只是程序员的选择,而不是语言的限制。其他的编程语言也会发生这样的事情,如C  ++。

所以,我们可以得出这样一个结论,缺乏抽象类并允许开发人员自由使用或不使用支持OOP原理的功能,并非认定JavaScript是OOP语言的真正障碍。

到此,相信大家对“JavaScript是OOP语言吗”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: JavaScript是OOP语言吗

本文链接: https://www.lsjlt.com/news/85957.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript是OOP语言吗
    本篇内容主要讲解“JavaScript是OOP语言吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript是OOP语言吗”吧!什么是OOPOOP模式...
    99+
    2022-10-19
  • javascript是编程语言吗
    这篇文章主要介绍“javascript是编程语言吗”,在日常操作中,相信很多人在javascript是编程语言吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”javascri...
    99+
    2022-10-19
  • JavaScript是前端语言吗
    这篇文章主要介绍“JavaScript是前端语言吗”,在日常操作中,相信很多人在JavaScript是前端语言吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScri...
    99+
    2022-10-19
  • javascript是解释型语言吗
    本篇内容主要讲解“javascript是解释型语言吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript是解释型语言吗”吧! ...
    99+
    2022-10-19
  • javascript是编译型语言吗
    这篇“javascript是编译型语言吗”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ja...
    99+
    2022-10-19
  • javascript和java是同种语言吗
    这篇文章主要介绍“javascript和java是同种语言吗”,在日常操作中,相信很多人在javascript和java是同种语言吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • javascript与asp是脚本语言吗
    本篇内容介绍了“javascript与asp是脚本语言吗”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • javascript是面向对象语言吗
    本篇内容主要讲解“javascript是面向对象语言吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript是面向对象语言吗”吧! ...
    99+
    2022-10-19
  • javascript是前端开发语言吗
    本篇内容介绍了“javascript是前端开发语言吗”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!java...
    99+
    2022-10-19
  • JavaScript属于语言吗
    这篇文章主要讲解了“JavaScript属于语言吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript属于语言吗”吧! ...
    99+
    2022-10-19
  • javascript是基于对象的语言吗
    这篇文章主要讲解了“javascript是基于对象的语言吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript是基于对象的语言吗”吧! ...
    99+
    2022-10-19
  • go语言是易语言吗
    go语言不是易语言,两者是不同的编程语言。go语言(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。易语言(EPL)是一门以中文作为程序代码编程语言,其以“易”著称,创始人为吴涛;易语言早...
    99+
    2023-05-14
    易语言 go语言 Golang
  • javascript是java语言的脚本形式吗
    这篇文章主要讲解了“javascript是java语言的脚本形式吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript是java语言的脚本形式...
    99+
    2022-10-19
  • go语言是编程语言吗
    本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型、并...
    99+
    2022-11-28
    Go Golang go语言
  • go语言是系统语言吗
    go语言是系统语言。Go语言是一门系统级语言,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,性能强大;它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C 等编译型语言的性能与安全性”。Go语言专门...
    99+
    2023-05-14
    Golang go语言
  • go语言是底层语言吗
    go语言不是底层语言,go语言被广泛认为是一种系统级编程语言,更接近于高级语言,而不是底层语言。底层语言通常是指与硬件直接交互的编程语言,它们提供了对计算机底层操作的精细控制,这些语言往往需要程序员手动管理内存、处理输入输出等底层细节,因此...
    99+
    2023-07-17
  • go语言是后端语言吗
    go语言是后端语言。go语言是服务端的编程语言,其方向主要是后端。使用Go语言做后端开发的原因:1、在语言层面具有语法简洁、执行效率高(底层语言)的特点;2、Go语言是主打并发、为并发而生的,其出发点即是瞄准大数据+云计算时代背景下的高并发...
    99+
    2023-05-14
    go语言
  • go语言是静态语言吗
    go语言是静态语言。GO是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。静态语言(强类型语言)是编译时变量的数据类型就可以确定的语言;而在Go语言中,变量就是有明确类型的,编译器也会检查变量类型的正确性,声...
    99+
    2023-05-14
    Golang go语言
  • go语言是机器语言吗
    go语言不是机器语言;机器语言是低级语言,而go语言是一种高级语言。Go语言是Google公司在2009年开源的一门高级编程语言,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,性能强大;它的主要目标是“兼具 Py...
    99+
    2023-05-14
    go语言 Golang
  • go语言是动态语言吗
    go不是动态语言。go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,其变量(variable)是有明确类型的,编译器也会检查变量类型的正确性;因此在使用变量之前必须声明数据类型需要,语法“var 变量...
    99+
    2023-05-14
    动态语言 go语言 Golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作