JavaScript는 OOP 언어인가요?
알아요, 이 주제는 너무 많이 논의됐어요. 그러나 그것은 계속해서 언급됩니다. Java나 C# 또는 기타 OOP 언어 개발자가 JavaScript를 접할 때마다 개발자들은 많은 불평을 합니다. 그들은 JavaScript로 작업하는 것이 완전히 엉망이라고 말합니다. 유형도 없고, 구조도 좋지 않으며, 약간 이상하고, 객체 지원도 좋지 않으며, 확실히 OOP 언어가 아닙니다.
이러한 불만 사항 중 일부는 받아들일 수 있지만 다른 불만 사항은 JavaScript에 유형이 없으므로 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);
위 코드에서 조합(주소 속성)의 예, 연결(부모 속성)의 예, 집계(직원 속성)의 예를 찾을 수 있습니다.
캡슐화의 경우 JavaScript 개체는 데이터와 기능을 지원하는 엔터티이지만 내부 세부 정보를 숨길 수 있는 높은 수준의 기본 지원은 없습니다. JavaScript 객체는 개인 정보 보호에 관심이 없습니다. 주의하지 않으면 모든 속성과 메서드에 공개적으로 액세스할 수 있습니다. 그러나 객체의 내부 상태를 정의하고 외부 액세스로부터 객체를 보호하기 위해 여러 기술을 적용할 수 있습니다. getter 및 setter를 사용하여 클로저를 활용하세요.
JavaScript는 소위 프로토타입 상속을 통해 기본 수준에서 상속을 지원합니다. 일부 개발자는 다소 단순하다고 생각하지만 JavaScript의 상속 메커니즘은 완전히 유효하며 대부분의 인식된 OOP 언어와 동일한 결과를 얻을 수 있습니다. 여러분이 어떻게 생각하든 JavaScript에는 "객체가 하나 이상의 다른 객체로부터 일부 또는 모든 기능을 얻는" 메커니즘이 있으며 이것이 바로 상속입니다.
다형성에 대한 도전은 많은 사람들이 이 개념을 데이터 유형과 연관시키기 때문에 더 어려운 것 같습니다. 실제로 다형성은 프로그래밍 언어의 여러 측면에 영향을 미치며 OOP 언어에만 관련된 것이 아닙니다. 일반적으로 여기에는 제네릭, 오버로딩 및 구조적 하위 유형과 같은 항목이 포함됩니다. 이 모든 것이 "단순"하고 약한 유형의 언어인 JavaScript에 비해 압도적으로 보입니다. 그러나 사실은 그렇지 않습니다. JavaScript에는 다양한 유형의 다형성을 구현할 수 있는 여러 가지 방법이 있으며 아마도 깨닫지도 못한 채 여러 번 수행했을 것입니다.
클래스 없는 OOP
"좋아요. 하지만 다시 말하지만 JavaScript에는 클래스가 없습니다."
많은 개발자는 JavaScript에 클래스 개념이 부족하다고 믿고 있으며 JavaScript를 진정한 객체 지향 언어로 간주하지 않습니다. OOP 원칙은 시행되지 않습니다.
그러나 비공식 정의에서는 클래스에 대한 명시적인 언급이 없음을 알 수 있습니다. 객체에는 속성과 원리가 필요하다는 것은 사실입니다. 그러나 클래스는 실제로 요구 사항이 아니며 때로는 공통 속성을 가진 개체 집합을 추상화하는 편리한 방법일 뿐입니다. 따라서 언어를 지원하는 개체에 클래스가 없더라도 JavaScript와 같은 개체 지향 언어일 수 있습니다.
또한 OOP 원칙의 목적을 지원하도록 설계되었습니다. 언어로 프로그래밍하기 위해 OOP 원칙이 필수는 아닙니다. 개발자는 객체 지향 코드를 생성할 수 있는 구문을 사용하거나 사용하지 않을 수도 있습니다. 많은 사람들은 개발자가 OOP 원칙을 위반하는 코드를 작성할 수 있기 때문에 JavaScript를 비판합니다. 하지만 이는 언어의 제한이 아닌 프로그래머의 선택일 뿐입니다. 이는 C++와 같은 다른 프로그래밍 언어에서도 발생합니다.
그래서 우리는 추상 클래스가 부족하고 개발자에게 OOP 원칙을 지원하는 기능을 자유롭게 사용하거나 사용하지 않도록 허용하는 것이 JavaScript를 OOP 언어로 식별하는 데 실질적인 장애물이 아니라는 결론을 내릴 수 있습니다
위 내용은 JavaScript는 OOP 언어인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











iPhone이 가장 사용자 친화적인 전자 기기 중 하나라는 사실은 비밀이 아니며, 그 이유 중 하나는 원하는 대로 쉽게 개인화할 수 있다는 것입니다. 개인화에서는 iPhone을 설정할 때 선택한 언어와 다른 언어로 언어를 변경할 수 있습니다. 여러 언어에 익숙하거나 iPhone의 언어 설정이 잘못된 경우 아래 설명에 따라 변경할 수 있습니다. iPhone 언어 변경 방법 [3가지 방법] iOS를 사용하면 사용자가 iPhone에서 선호하는 언어를 자유롭게 전환하여 다양한 요구에 적응할 수 있습니다. Siri와의 상호 작용 언어를 변경하여 음성 지원과의 의사소통을 용이하게 할 수 있습니다. 동시에 로컬 키보드를 사용하면 여러 언어 간을 쉽게 전환하여 입력 효율성을 높일 수 있습니다.

얼굴 검출 및 인식 기술은 이미 상대적으로 성숙하고 널리 사용되는 기술입니다. 현재 가장 널리 사용되는 인터넷 응용 언어는 JS입니다. 웹 프런트엔드에서 얼굴 감지 및 인식을 구현하는 것은 백엔드 얼굴 인식에 비해 장점과 단점이 있습니다. 장점에는 네트워크 상호 작용 및 실시간 인식이 줄어 사용자 대기 시간이 크게 단축되고 사용자 경험이 향상된다는 단점이 있습니다. 모델 크기에 따라 제한되고 정확도도 제한됩니다. js를 사용하여 웹에서 얼굴 인식을 구현하는 방법은 무엇입니까? 웹에서 얼굴 인식을 구현하려면 JavaScript, HTML, CSS, WebRTC 등 관련 프로그래밍 언어 및 기술에 익숙해야 합니다. 동시에 관련 컴퓨터 비전 및 인공지능 기술도 마스터해야 합니다. 웹 측면의 디자인으로 인해 주목할 가치가 있습니다.

때로는 컴퓨터 시스템을 설치했는데 시스템이 영어로 되어 있는 경우가 있습니다. 이 경우 컴퓨터 언어를 중국어로 변경해야 합니다. 이제 win10 시스템에서 컴퓨터 언어를 중국어로 변경하는 방법을 알려주세요. . win10에서 컴퓨터 언어를 중국어로 변경하는 방법 1. 컴퓨터를 켜고 왼쪽 하단에 있는 시작 버튼을 클릭합니다. 2. 왼쪽의 설정 옵션을 클릭하세요. 3. 열리는 페이지에서 "시간 및 언어"를 선택합니다. 4. 연 후 왼쪽의 "언어"를 클릭합니다. 5. 여기에서 원하는 컴퓨터 언어를 설정할 수 있습니다.

인터넷 금융의 급속한 발전으로 인해 주식 투자는 점점 더 많은 사람들의 선택이 되었습니다. 주식 거래에서 캔들 차트는 주가의 변화 추세를 보여주고 투자자가 보다 정확한 결정을 내리는 데 도움이 되는 일반적으로 사용되는 기술적 분석 방법입니다. 이 기사에서는 PHP와 JS의 개발 기술을 소개하고 독자가 주식 캔들 차트를 그리는 방법을 이해하도록 유도하며 구체적인 코드 예제를 제공합니다. 1. 주식 캔들 차트의 이해 주식 캔들 차트를 그리는 방법을 소개하기 전에 먼저 캔들 차트가 무엇인지부터 이해해야 합니다. 캔들스틱 차트는 일본인이 개발했습니다.

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

대규모 모델의 지속적인 최적화를 기반으로 하는 LLM 에이전트(이러한 강력한 알고리즘 엔터티)는 복잡한 다단계 추론 작업을 해결할 수 있는 잠재력을 보여주었습니다. 자연어 처리부터 딥 러닝까지 LLM 에이전트는 인간의 언어를 이해하고 생성할 수 있을 뿐만 아니라 전략을 수립하고 다양한 환경에서 작업을 수행하며 심지어 API 호출 및 코딩을 사용하여 빌드까지 할 수 있어 점차 연구 및 산업의 초점이 되고 있습니다. 솔루션. 이러한 맥락에서 AgentQuest 프레임워크의 도입은 LLM 에이전트의 평가 및 발전을 위한 모듈식 벤치마킹 플랫폼을 제공할 뿐만 아니라 연구원에게 이러한 에이전트의 성능을 추적하고 개선할 수 있는 강력한 도구를 제공합니다. 좀 더 세분화된 수준

js와 vue의 관계: 1. 웹 개발의 초석인 JS 2. 프론트엔드 프레임워크로서의 Vue.js의 등장 3. JS와 Vue의 상호 보완적인 관계 4. JS와 Vue의 실제 적용 Vue.

1. 휴대폰 설정 메뉴에서 [시스템 관리]를 클릭하세요. 2. [언어] 항목을 클릭하세요. 3. 사용하려는 시스템 언어를 선택합니다.
