Hướng dẫn can i use javascript for oop? - tôi có thể sử dụng javascript cho oop không?

Tôi đang trả lời câu hỏi này bị trả lại từ một góc độ khác.

Đây là một chủ đề vĩnh cửu, và chúng tôi có thể mở một cuộc chiến ngọn lửa trong rất nhiều diễn đàn.

Khi mọi người khẳng định rằng JavaScript là ngôn ngữ lập trình OO vì họ có thể sử dụng điều này, thì tôi hỏi: Tại sao không phải là ngôn ngữ lập trình OO? Lặp lại, bạn có thể sử dụng Ood với C và nếu bạn nói rằng C là ngôn ngữ lập trình OO mà mọi người sẽ nói bạn rằng bạn bị điên.

Chúng tôi có thể đặt ở đây rất nhiều tài liệu tham khảo về chủ đề này trong các cuốn sách và diễn đàn rất cũ, bởi vì chủ đề này cũ hơn internet :)

JavaScript đã không thay đổi trong nhiều năm, nhưng các lập trình viên mới muốn hiển thị JavaScript là ngôn ngữ lập trình OO. Tại sao? JavaScript là một ngôn ngữ mạnh mẽ, nhưng không phải là ngôn ngữ lập trình OO.

Một ngôn ngữ lập trình OO phải có đối tượng, phương pháp, thuộc tính, lớp, đóng gói, tổng hợp, kế thừa và đa hình. Bạn có thể thực hiện tất cả các điểm này, nhưng JavaScript không có chúng.

Một ví dụ rất minh họa: Trong Chương 6 của "JavaScript hướng đối tượng" mô tả 10 cách cư xử để thực hiện "kế thừa". Có bao nhiêu cách cư xử ở Java? Một, và trong C ++? Một, và trong Delphi (đối tượng Pascal)? Một, và trong mục tiêu-c? Một.10 manners to implement "inheritance". How many manners there are in Java? One, and in C++? One, and in Delphi (Object Pascal)? One, and in Objective-C? One.

Tại sao điều này khác nhau? Bởi vì Java, C ++, Delphi và Objective-C được thiết kế với OOP trong tâm trí, nhưng không phải là JavaScript.

Khi tôi còn là sinh viên (vào năm 1993), ở trường đại học, có một công việc gia đình điển hình: thực hiện một chương trình được thiết kế bằng cách sử dụng một thiết kế hướng đối tượng) với ngôn ngữ không phải Trong thời gian đó, ngôn ngữ được chọn là C (không phải C ++). Mục tiêu của các thực tiễn này là làm rõ sự khác biệt giữa OOD và OOP, và có thể phân biệt giữa các ngôn ngữ OOP và không phải OOP.

Dù sao, đó là bằng chứng cho thấy không phải tất cả mọi người đều có một số ý kiến ​​về chủ đề này :)

Dù sao, theo tôi, JavaScript là một ngôn ngữ mạnh mẽ và tương lai trong lớp phía khách hàng!

Vì JavaScript được sử dụng rộng rãi trong phát triển web, trong bài viết này, chúng tôi sẽ khám phá một số cơ chế định hướng đối tượng được JavaScript hỗ trợ để tận dụng tối đa nó. Một số câu hỏi phỏng vấn phổ biến trong JavaScript trên OOPS bao gồm,- Lập trình hướng đối tượng được thực hiện trong JavaScript như thế nào? Nó khác với các ngôn ngữ khác như thế nào? Bạn có thể thực hiện kế thừa trong JavaScript, v.v.Object Oriented mechanisms supported by JavaScript to get the most out of it. Some of the common interview questions in JavaScript on OOPS include,- “How is Object-Oriented Programming implemented in JavaScript? How does it differ from other languages? Can you implement Inheritance in JavaScript” and so on…

Có một số tính năng hoặc cơ chế nhất định làm cho một đối tượng ngôn ngữ được định hướng như: & nbsp;

  • Sự vật
  • Các lớp học
  • Đóng gói
  • Di sản

Hãy cùng đi sâu vào các chi tiết của từng người trong số họ và xem cách chúng được thực hiện trong JavaScript.

1. Đối tượng Một đối tượng là một thực thể duy nhất chứa các thuộc tính và phương thức. Ví dụ, xe hơi là một đối tượng thực tế, có một số đặc điểm như màu sắc, loại, mô hình, mã lực và thực hiện các hành động nhất định như ổ đĩa. Các đặc điểm của một đối tượng được gọi là các thuộc tính trong lập trình hướng đối tượng và các hành động được gọi là phương thức. Một đối tượng là một thể hiện của một lớp. Các đối tượng ở khắp mọi nơi trong JavaScript, hầu hết mọi phần tử đều là một đối tượng cho dù đó là một hàm, mảng hoặc chuỗi. & Nbsp;– An Object is a unique entity that contains properties and methods. For example “car” is a real life Object, which has some characteristics like color, type, model, horsepower and performs certain actions like drive. The characteristics of an Object are called Properties in Object-Oriented Programming and the actions are called methods. An Object is an instance of a class. Objects are everywhere in JavaScript, almost every element is an Object whether it is a function, array, or string. 

Lưu ý: Một phương thức trong JavaScript là thuộc tính của một đối tượng có giá trị là hàm. & NBSP; A Method in javascript is a property of an object whose value is a function. 

Đối tượng có thể được tạo theo hai cách trong JavaScript: & nbsp;

  • Sử dụng một đối tượng theo nghĩa đen & nbsp;Object Literal 

JavaScript

let person = {

    first_name:'Mukul',

    last_name: 'Latiyan',

        0    1    2

    3    4     5

    6    7

        9

    first_name:1

    3first_name:3first_name:4,

    3first_name:7first_name:8

    'Mukul'0

'Mukul'0

'Mukul'2

'Mukul'3

Output:  

Hướng dẫn can i use javascript for oop? - tôi có thể sử dụng javascript cho oop không?

  • Sử dụng một hàm tạo đối tượng: & nbsp;Object Constructor: 

JavaScript

    1 'Mukul'5

'Mukul'6'Mukul'7'Mukul'8

'Mukul'6'Mukul'7,1

'Mukul'0

,3,4 ,5'Mukul',__7

    0,4 ,5    3,__5555549

    7

    8

Output:  

Hướng dẫn can i use javascript for oop? - tôi có thể sử dụng javascript cho oop không?

  • Sử dụng phương thức object.create (): Phương thức object.create () tạo một đối tượng mới, sử dụng một đối tượng hiện có làm nguyên mẫu của đối tượng mới được tạo. & Nbsp;Object.create() method: The Object.create() method creates a new object, using an existing object as the prototype of the newly created object. 

JavaScript

    9

    last_name: 1last_name: 2,

    last_name: 5    1    2

    3last_name: 9'Mukul'7'Latiyan'1

    6'Latiyan'3'Mukul'7'Latiyan'5

    'Mukul'0

'Mukul'0

'Latiyan'9

,0'Mukul',2

,3,4,2

,6

Output:  

Hướng dẫn can i use javascript for oop? - tôi có thể sử dụng javascript cho oop không?

    1 'Mukul'5– Classes are blueprint of an Object. A class can have many Objects because class is a template while Object are instances of the class or the concrete implementation. 
Before we move further into implementation, we should know unlike other Object Oriented Language there are no classes in JavaScript we have only Object. To be more precise, JavaScript is a prototype based Object Oriented Language, which means it doesn’t have classes, rather it defines behaviors using a constructor function and then reuse it using the prototype. 

,3,4 ,5'Mukul',__7 Even the classes provided by ECMA2015 are objects.

    0,4 ,5    3,__5555549
–Mozilla Developer Network

Sử dụng phương thức object.create (): Phương thức object.create () tạo một đối tượng mới, sử dụng một đối tượng hiện có làm nguyên mẫu của đối tượng mới được tạo. & Nbsp; 
Lets use ES6 classes then we will look at the traditional way of defining an Object and simulate them as classes.

JavaScript

,7

,8,9

    'Mukul'7    2

    'Mukul'7    5

    'Mukul'7    8

,8'Mukul'0

,8    02

    1 'Mukul'5

,8'Mukul'0

'Mukul'0

,3,4 ,5'Mukul',__7

    0,4 ,5    3,__5555549

    29

    30

    31

Output:

Hướng dẫn can i use javascript for oop? - tôi có thể sử dụng javascript cho oop không?

Sử dụng phương thức object.create (): Phương thức object.create () tạo một đối tượng mới, sử dụng một đối tượng hiện có làm nguyên mẫu của đối tượng mới được tạo. & Nbsp;

JavaScript

2. Các lớp học lớp là bản thiết kế của một đối tượng. Một lớp có thể có nhiều đối tượng vì lớp là một mẫu trong khi đối tượng là trường hợp của lớp hoặc triển khai cụ thể. & NBSP; Trước khi chúng ta chuyển sang thực hiện, chúng ta nên biết không giống như ngôn ngữ hướng đối tượng khác không có lớp trong javascript, chúng ta chỉ có đối tượng . Nói chính xác hơn, JavaScript là ngôn ngữ định hướng đối tượng dựa trên nguyên mẫu, có nghĩa là nó không có lớp, thay vào đó, nó định nghĩa các hành vi sử dụng hàm tạo hàm và sau đó sử dụng nó bằng nguyên mẫu. & NBSP;

    'Mukul'7    36

Lưu ý: Ngay cả các lớp được cung cấp bởi ECMA2015 cũng là đối tượng.

    'Mukul'7    42

    43

    44    1    2

        48    49    50'Mukul'7    52

'Mukul'0

Các lớp JavaScript, được giới thiệu trong Ecmascript 2015, chủ yếu là đường cú pháp so với kế thừa dựa trên nguyên mẫu hiện có của JavaScript. Cú pháp lớp không giới thiệu một mô hình kế thừa hướng đối tượng mới cho JavaScript. Các lớp JavaScript cung cấp một cú pháp đơn giản và rõ ràng hơn nhiều để tạo các đối tượng và đối phó với kế thừa. & NBSP;

Ví dụ: & nbsp; cho phép sử dụng các lớp ES6 sau đó chúng ta sẽ xem cách truyền thống xác định một đối tượng và mô phỏng chúng là các lớp.

    72

    73

    31

Output:  

Hướng dẫn can i use javascript for oop? - tôi có thể sử dụng javascript cho oop không?

    03    4     05'Mukul'7    07

    11,4     13    14    15    16    15    18__ – The process of wrapping properties and functions within a single unit is known as encapsulation. 
Let’s understand encapsulation with an example.

    20,4     13    23    15    25    15    27,9

    75

        77

    3'Mukul'7    2

    3'Mukul'7    83

    'Mukul'0

        87

    3'Mukul'7    90

    'Mukul'0

        02

    3    96'Mukul'7    98'Mukul'7first_name:00

    'Mukul'0

'Mukul'0

Theo cách truyền thống.

first_name:09first_name:10,9

first_name:12

Output:  

Hướng dẫn can i use javascript for oop? - tôi có thể sử dụng javascript cho oop không?

    1     33
Sometimes encapsulation refers to the hiding of data or data Abstraction which means representing essential features hiding the background detail. Most of the OOP languages provide access modifiers to restrict the scope of a variable, but their are no such access modifiers in JavaScript but there are certain ways by which we can restrict the scope of variables within the Class/Object. 

Example:  

JavaScript

    'Mukul'7    39

    first_name:16

    11,4     13___

    first_name:20    1    2

    20,4     13    23,    25,____127,9

first_name:26first_name:27

    'Mukul'0

    'Mukul'7first_name:32    1    2

    3    4 first_name:37

first_name:26first_name:27

    'Mukul'0

'Mukul'0

,3,4 ,5'Mukul',__7

first_name:50

first_name:51

first_name:52

Output:  

Hướng dẫn can i use javascript for oop? - tôi có thể sử dụng javascript cho oop không?

Trong ví dụ trên, chúng tôi cố gắng truy cập một số thuộc tính (person1.firstname) và các chức năng (person1.getDetails_noAccess) nhưng nó trả về không xác định trong khi chúng là phương thức mà chúng tôi có thể truy cập từ đối tượng người (person1.getDetails_access ()). Bằng cách thay đổi cách chúng tôi xác định một hàm chúng tôi có thể hạn chế phạm vi của nó.

4. Kế thừa - Đó là một khái niệm trong đó một số thuộc tính và phương thức của một đối tượng đang được sử dụng bởi một đối tượng khác. Không giống như hầu hết các ngôn ngữ OOP nơi các lớp kế thừa các lớp, các đối tượng JavaScript kế thừa các đối tượng, tức là một số tính năng (thuộc tính và phương thức) của một đối tượng có thể được sử dụng lại bởi các đối tượng khác. & NBSP;– It is a concept in which some properties and methods of an Object are being used by another Object. Unlike most of the OOP languages where classes inherit classes, JavaScript Objects inherit Objects i.e. certain features (property and methods) of one object can be reused by other Objects. 

Hãy để hiểu về sự kế thừa với một ví dụ: & nbsp;

JavaScript

    75

    first_name:55

    3'Mukul'7    2

    'Mukul'0

    first_name:62

    3    4 first_name:65'Mukul'7first_name:67

    'Mukul'0

'Mukul'0

first_name:71

        77

    3first_name:75first_name:76

    3'Mukul'7    83

    'Mukul'0

    first_name:62

    3    4 first_name:86first_name:75first_name:88'Mukul'7first_name:90

    'Mukul'0

'Mukul'0

first_name:94,4 first_name:96'Mukul'first_name:98

first_name:99

Output:  

Hướng dẫn can i use javascript for oop? - tôi có thể sử dụng javascript cho oop không?

Trong ví dụ trên, chúng tôi xác định một đối tượng người có một số thuộc tính và phương thức nhất định và sau đó chúng tôi thừa hưởng đối tượng người trong đối tượng sinh viên và sử dụng tất cả các thuộc tính và phương thức của đối tượng người cũng như xác định các thuộc tính và phương thức nhất định cho đối tượng học sinh. & nbsp;

Lưu ý: Cả đối tượng người và sinh viên đều có cùng một phương thức (tức là toString ()), đây được gọi là phương thức ghi đè. Ghi đè phương thức cho phép một phương thức trong một lớp con có cùng tên và chữ ký phương thức như của lớp cha. & Nbsp; Trong mã trên, từ khóa siêu được sử dụng để chỉ biến thể hiện của lớp cha ngay lập tức. & NBSP; The Person and Student object both have same method (i.e toString()), this is called Method Overriding. Method Overriding allows a method in a child class to have the same name and method signature as that of a parent class. 
In the above code, the super keyword is used to refer to the immediate parent class’s instance variable. 

Trong bài viết này, chúng tôi đã giới thiệu các tính năng định hướng đối tượng trong JavaScript, có toàn bộ một cuốn sách giải thích lập trình hướng đối tượng trong JavaScript một cách chi tiết tuyệt vời,-JavaScript hướng đối tượng của Stoyan Stefanov, & NBSP; Bài viết này được đóng góp bởi Sumit Ghosh. Nếu bạn thích GeekSforGeeks và muốn đóng góp, bạn cũng có thể viết một bài viết bằng Write.GeekSforGeek.org hoặc gửi bài viết của bạn. Xem bài viết của bạn xuất hiện trên trang chính của GeekSforGeek và giúp các chuyên viên máy tính khác. Xin vui lòng viết nhận xét nếu bạn tìm thấy bất cứ điều gì không chính xác hoặc bạn muốn chia sẻ thêm thông tin về chủ đề được thảo luận ở trên.
This article is contributed by Sumit Ghosh. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to . See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

JavaScript được biết đến nhiều nhất để phát triển trang web nhưng nó cũng được sử dụng trong nhiều môi trường không phải là trình duyệt. Bạn có thể tìm hiểu JavaScript từ cơ sở bằng cách làm theo các ví dụ JavaScript và JavaScript này.


Oops có được yêu cầu trong javascript không?

OOP không cần các lớp và nguyên tắc được yêu cầu cho các đối tượng.Các lớp không phải là một yêu cầu thực sự, nhưng đôi khi chúng là một cách thuận tiện cho các bộ đối tượng trừu tượng có các thuộc tính chung.Vì vậy, một ngôn ngữ có thể được định hướng đối tượng nếu nó hỗ trợ các đối tượng ngay cả khi không có các lớp, như trong JavaScript. Features and principles are required for objects. Classes are not a real requirement, but they are sometimes a convenient way to abstract sets of objects with common properties. So, a language can be Object Oriented if it supports objects even without classes, as in JavaScript.

OOP hoạt động như thế nào trong JavaScript?

Lập trình hướng đối tượng là một cách viết mã cho phép bạn tạo các đối tượng khác nhau từ một đối tượng chung.Đối tượng chung thường được gọi là bản thiết kế trong khi các đối tượng được tạo được gọi là các thể hiện.Mỗi trường hợp có các thuộc tính không được chia sẻ với các trường hợp khác.allows you to create different objects from a common object. The common object is usually called a blueprint while the created objects are called instances. Each instance has properties that are not shared with other instances.