JavaScript是OOP语言吗?
我知道,这个话题已经被讨论过太多次了。但是,它总是被不断地提及。每当Java或C#或任何其他OOP语言的开发人员与JavaScript接触时,这些开发人员都会抱怨连连。他们说,用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语言的真正障碍
Atas ialah kandungan terperinci JavaScript是OOP语言吗?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bukan rahsia lagi bahawa iPhone adalah salah satu alat elektronik yang paling mesra pengguna, dan salah satu sebabnya ialah ia boleh diperibadikan dengan mudah mengikut keinginan anda. Dalam Pemperibadian, anda boleh menukar bahasa kepada bahasa yang berbeza daripada bahasa yang anda pilih semasa menyediakan iPhone anda. Jika anda biasa dengan berbilang bahasa, atau tetapan bahasa iPhone anda salah, anda boleh menukarnya seperti yang kami terangkan di bawah. Cara Menukar Bahasa iPhone [3 Kaedah] iOS membenarkan pengguna menukar bahasa pilihan pada iPhone secara bebas untuk menyesuaikan diri dengan keperluan yang berbeza. Anda boleh menukar bahasa interaksi dengan Siri untuk memudahkan komunikasi dengan pembantu suara. Pada masa yang sama, apabila menggunakan papan kekunci tempatan, anda boleh bertukar antara berbilang bahasa dengan mudah untuk meningkatkan kecekapan input.

Teknologi pengesanan dan pengecaman muka adalah teknologi yang agak matang dan digunakan secara meluas. Pada masa ini, bahasa aplikasi Internet yang paling banyak digunakan ialah JS Melaksanakan pengesanan muka dan pengecaman pada bahagian hadapan Web mempunyai kelebihan dan kekurangan berbanding dengan pengecaman muka bahagian belakang. Kelebihan termasuk mengurangkan interaksi rangkaian dan pengecaman masa nyata, yang sangat memendekkan masa menunggu pengguna dan meningkatkan pengalaman pengguna termasuk: terhad oleh saiz model, ketepatannya juga terhad. Bagaimana untuk menggunakan js untuk melaksanakan pengesanan muka di web? Untuk melaksanakan pengecaman muka di Web, anda perlu biasa dengan bahasa dan teknologi pengaturcaraan yang berkaitan, seperti JavaScript, HTML, CSS, WebRTC, dll. Pada masa yang sama, anda juga perlu menguasai visi komputer yang berkaitan dan teknologi kecerdasan buatan. Perlu diingat bahawa kerana reka bentuk bahagian Web

Kadang-kadang kita hanya memasang sistem komputer dan mendapati bahawa sistem itu dalam bahasa Inggeris Dalam kes ini, kita perlu menukar bahasa komputer kepada bahasa Cina Jadi bagaimana untuk menukar bahasa komputer ke bahasa Cina dalam sistem win10 . Cara menukar bahasa komputer dalam win10 kepada bahasa Cina 1. Hidupkan komputer dan klik butang mula di sudut kiri bawah. 2. Klik pilihan tetapan di sebelah kiri. 3. Pilih "Masa dan Bahasa" pada halaman yang terbuka 4. Selepas membuka, klik "Bahasa" di sebelah kiri 5. Di sini anda boleh menetapkan bahasa komputer yang anda mahu.

Dengan perkembangan pesat kewangan Internet, pelaburan saham telah menjadi pilihan semakin ramai orang. Dalam perdagangan saham, carta lilin adalah kaedah analisis teknikal yang biasa digunakan Ia boleh menunjukkan trend perubahan harga saham dan membantu pelabur membuat keputusan yang lebih tepat. Artikel ini akan memperkenalkan kemahiran pembangunan PHP dan JS, membawa pembaca memahami cara melukis carta lilin saham dan menyediakan contoh kod khusus. 1. Memahami Carta Lilin Saham Sebelum memperkenalkan cara melukis carta lilin saham, kita perlu memahami dahulu apa itu carta lilin. Carta candlestick telah dibangunkan oleh orang Jepun

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Berdasarkan pengoptimuman berterusan model besar, ejen LLM - entiti algoritma yang berkuasa ini telah menunjukkan potensi untuk menyelesaikan tugas penaakulan pelbagai langkah yang kompleks. Daripada pemprosesan bahasa semula jadi kepada pembelajaran mendalam, ejen LLM secara beransur-ansur menjadi tumpuan penyelidikan dan industri Mereka bukan sahaja dapat memahami dan menjana bahasa manusia, tetapi juga merumuskan strategi, melaksanakan tugas dalam persekitaran yang pelbagai, dan juga menggunakan panggilan API dan pengekodan untuk Membina. penyelesaian. Dalam konteks ini, pengenalan rangka kerja AgentQuest merupakan satu peristiwa penting Ia bukan sahaja menyediakan platform penanda aras modular untuk penilaian dan kemajuan ejen LLM, tetapi juga menyediakan penyelidik dengan alat yang Berkuasa untuk menjejak dan meningkatkan prestasi ejen ini pada masa yang tertentu. tahap yang lebih berbutir

Hubungan antara js dan vue: 1. JS sebagai asas pembangunan Web; 2. Kebangkitan Vue.js sebagai rangka kerja hadapan 3. Hubungan pelengkap antara JS dan Vue; Vue.

1. Klik [Pengurusan Sistem] dalam menu tetapan telefon. 2. Klik pilihan [Bahasa]. 3. Pilih bahasa sistem yang anda ingin gunakan.
