찾다
웹 프론트엔드JS 튜토리얼JavaScript 생성자와 인스턴스of, JSOO_javascript 기술의 행복한 적 한 쌍

적어도 JavaScriptOO를 시도하는 모든 프로그래머는 비즈니스 자체보다는 객체 지향 메커니즘의 시뮬레이션에 많은 에너지를 소비합니다.
이것은 Java, C, 심지어 Php 개발자에게도 상상할 수 없는 일입니다.
더 나쁜 점은 다음과 같습니다. OO를 시뮬레이션하는 것은 고급 JavaScript 프로그래머에게 사악한 매력을 가지고 있다는 것입니다.
이 작업을 수행하는 것은 비즈니스를 초월하기 때문에 IQ를 향상시킬 수 있는 새로운 프로그래밍 언어를 만드는 일종의 즐거움이 있습니다.
지난 몇 년 동안 모든 사람들은 자신의 웹사이트의 common.js를 프레임워크로 작성하고 싶었습니다. YUI, JQuery 등이 출시되기 전까지는
그러나 각 프레임워크는 다소 진정되었습니다. JavaScriptOO 시뮬레이션이 아직 도착하지 않았습니다.
세상에 불필요한 대군주가 없을 수도 있고, 아니면 모두가 JS2.0까지 기다려야 할 수도 있습니다.
새로운 방법이 있다면. 객체지향이라면 당연히 JavaScript가 있습니다. 측면이 매우 좋습니다.

코드 복사 코드는 다음과 같습니다.

function Person(name){
this.name = name;
}
var lenel = new person("lenel")
alert(lenel.constructor === Person);
alert(lenel instanceof Person === true);
alert(lenel instanceof Object === true);

지금까지 모든 것이 조화를 이루고 있습니다. 객체의 생성자는 말 그대로 생성자를 가리킵니다.
객체는 이를 생성한 Person의 인스턴스입니다.
JavaScript가 프로토타입을 제공하는 것과 마찬가지로 모든 객체는 Object의 인스턴스입니다. 메소드 구현 방법 확장 및 상속


Person. 프로토타입.getName = function() {
return this.name
};


이 정의 이후에는 모든 객체에 getName 메서드가 있습니다.
물론 그럴 수도 있습니다. 객체 구성에 적힌


function Person(name ){
this.name = name;
this.getName = function(){
return this.name;
}


하지만 접근 방식은 추가 성능 손실을 가져올 뿐만 아니라 전용 변수에 액세스할 수 있는 권한만 있는 것이 아닙니다.
프로토타입을 사용하여 작성하는 방식과도 다르지만 이것이 이 글의 초점은 아닙니다
다음으로 설명하겠습니다. 상속을 생각해 보세요. 일반적인 작성 방법은 다음과 같습니다.



코드 복사 코드는 다음과 같습니다.function Stuff(이름, id){
this.name = name;
this.id = id
}
Stuff.prototype = new Person();
var piupiu = new Stuff("piupiu", "007");
alert(piupiu.getName());


아주 좋습니다. getName 메소드를 상속합니다. >인스턴스 확인



코드 복사
코드는 다음과 같습니다.alert(piupiu instanceof Stuff = == true); alert(piupiu instanceof Person === true);

매우 좋습니다. piupiu가 매우 Java와 관련되어 있음을 보여줍니다.
생성자를 살펴보겠습니다



코드 복사
코드는 다음과 같습니다.alert( piupiu.constructor === Stuff);//false test (piupiu.constructor === Person);//true

new Stuff의 생성자가 왜 Person인지 의문이 생깁니다.
이것도 말도 안 되는 이유입니다. 결론을 기억해야 합니다
결론: 객체의 생성자 속성은 생성자를 가리키는 것이 아니라 객체 생성자의 프로토타입 속성의 생성자 속성을 가리킵니다.
나의 글쓰기 실력 너무 형편없어서 읽어도 명확하지 않다고 생각했습니다
여기에 넣으세요:
객체 piupiu의 생성자 속성은 해당 생성자의 프로토타입 속성인 생성자 속성을 가리킵니다 Stuff
Stuff.prototype = new Person();
그래서 Stuff.prototype.constructor === Person.
그래서 piupiu.consturctor === Person
위의 결론은 객체가 상속될 때만 나타나는 것이 아닙니다. , 객체를 정의할 때도




코드 복사
코드는 다음과 같습니다.function Student( name){ this.name = 이름;
}
Student.prototype = {
getName :function(){
return this.name; :함수(이름){
this.name = 이름
}
}


메서드가 많으면 이렇게 작성하는 경우가 더 규칙적으로 보입니다.
실제로 이런 작성 방식은 생성자를 희생하기도 합니다
코드 복사 코드는 다음과 같습니다.

var moen = new Student("moen")
alert(moen.constructor === Student) ;//false
alert( moen.constructor === Object);//true

{}는 new Object()와 동일하므로 위 결론에 따르면 프로토타입이 ={}, 생성자가 변경됩니다.
생성자를 보호합니다! 상속 시 루프를 사용하여 상위 클래스의 메서드를 하위 클래스에 복사합니다.
코드 복사 코드는 다음과 같습니다.

function Stuff1(name,id){
this.name = name; >}
for(var fn in Person.prototype){
Stuff1.prototype[fn] = Person.prototype[fn];
}
var piupiu1 = new Stuff1("piupiu1"," 008");
alert(piupiu1.getName() == = "piupiu1");
alert(piupiu1.constructor === Stuff1);


작동합니다! 행복하게 부모 클래스의 모든 메서드를 상속받으면 부모-자식 관계가 끊어집니다.


alert(piupiu1 인스턴스of Stuff1 == = true);//true
alert(piupiu1 인스턴스of Person === true);//false


분명히 Stuff1이 Person으로부터 상속받았다고 말하지 않았는데, for 루프만 있다는 게 무슨 뜻일까요?
이것은 모순인 것 같습니다.
그래서. , 객체를 깊이있게 사용하면 조심하지 않아도 instantceof와 생성자가 문자 그대로의 의미를 잃게 됩니다.
따라서 프레임워크를 사용할 때 상속 기능이 제공되면 어떤 것을 사용하는지 알 수 없습니다.
그래서 OO를 시뮬레이션할 때는 이 두 리터럴에 대한 대안을 제공해야 합니다.
OO를 시뮬레이션하려면 속성이나 메서드 구현의 의미를 알아야 합니다. 이는 확실히 이 문제에 국한되지 않습니다. 하위 클래스 메서드에서 동일한 이름으로 부모 클래스의 메서드를 호출하는 것은 OO 언어의 일반적인 기능입니다.
JS도 기본적으로 매우 어렵습니다. 그러나 Base 라이브러리와 같이 신중하게 수행하면 사용하기가 더 자연스럽습니다.
물론, instanceof 및 생성자의 사용을 포기할 수 있으며, 그런 것이 있다는 것을 알면 됩니다. 그래도 일은 계속할 수 있고 아무도 죽지 않을 것입니다.
그러나 혼자 싸우는 것이 아니라면 파트너에게 이 두 명의 적들을 버리라고 알리십시오.
오늘의 요점과 유사하게 참전용사들은 이것을 잘 알고 있습니다. 그러나 팀의 모든 사람이 통일된 이해를 갖고 있지 않다면
흥미로운 현상은> 을 강조하고 > 그리고 둘은 서로를 그냥 무시하거나 전혀 언급하지 않습니다. 그 원한은 매우 깊습니다.
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Python vs. JavaScript : 개발자를위한 비교 분석Python vs. JavaScript : 개발자를위한 비교 분석May 09, 2025 am 12:22 AM

Python과 JavaScript의 주요 차이점은 유형 시스템 및 응용 프로그램 시나리오입니다. 1. Python은 과학 컴퓨팅 및 데이터 분석에 적합한 동적 유형을 사용합니다. 2. JavaScript는 약한 유형을 채택하며 프론트 엔드 및 풀 스택 개발에 널리 사용됩니다. 두 사람은 비동기 프로그래밍 및 성능 최적화에서 고유 한 장점을 가지고 있으며 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

Python vs. JavaScript : 작업에 적합한 도구 선택Python vs. JavaScript : 작업에 적합한 도구 선택May 08, 2025 am 12:10 AM

Python 또는 JavaScript를 선택할지 여부는 프로젝트 유형에 따라 다릅니다. 1) 데이터 과학 및 자동화 작업을 위해 Python을 선택하십시오. 2) 프론트 엔드 및 풀 스택 개발을 위해 JavaScript를 선택하십시오. Python은 데이터 처리 및 자동화 분야에서 강력한 라이브러리에 선호되는 반면 JavaScript는 웹 상호 작용 및 전체 스택 개발의 장점에 없어서는 안될 필수입니다.

파이썬 및 자바 스크립트 : 각각의 강점을 이해합니다파이썬 및 자바 스크립트 : 각각의 강점을 이해합니다May 06, 2025 am 12:15 AM

파이썬과 자바 스크립트는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구와 개인 선호도에 따라 다릅니다. 1. Python은 간결한 구문으로 데이터 과학 및 백엔드 개발에 적합하지만 실행 속도가 느립니다. 2. JavaScript는 프론트 엔드 개발의 모든 곳에 있으며 강력한 비동기 프로그래밍 기능을 가지고 있습니다. node.js는 풀 스택 개발에 적합하지만 구문은 복잡하고 오류가 발생할 수 있습니다.

JavaScript의 핵심 : C 또는 C에 구축 되었습니까?JavaScript의 핵심 : C 또는 C에 구축 되었습니까?May 05, 2025 am 12:07 AM

javaScriptisNotBuiltoncorc; it'SangretedLanguageThatrunsonOngineStenWrittenInc .1) javaScriptWasDesignEdasAlightweight, 해석 hanguageforwebbrowsers.2) Endinesevolvedfromsimpleplemporectreterstoccilpilers, 전기적으로 개선된다.

JavaScript 응용 프로그램 : 프론트 엔드에서 백엔드까지JavaScript 응용 프로그램 : 프론트 엔드에서 백엔드까지May 04, 2025 am 12:12 AM

JavaScript는 프론트 엔드 및 백엔드 개발에 사용할 수 있습니다. 프론트 엔드는 DOM 작업을 통해 사용자 경험을 향상시키고 백엔드는 Node.js를 통해 서버 작업을 처리합니다. 1. 프론트 엔드 예 : 웹 페이지 텍스트의 내용을 변경하십시오. 2. 백엔드 예제 : node.js 서버를 만듭니다.

Python vs. JavaScript : 어떤 언어를 배워야합니까?Python vs. JavaScript : 어떤 언어를 배워야합니까?May 03, 2025 am 12:10 AM

Python 또는 JavaScript는 경력 개발, 학습 곡선 및 생태계를 기반으로해야합니다. 1) 경력 개발 : Python은 데이터 과학 및 백엔드 개발에 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 적합합니다. 2) 학습 곡선 : Python 구문은 간결하며 초보자에게 적합합니다. JavaScript Syntax는 유연합니다. 3) 생태계 : Python에는 풍부한 과학 컴퓨팅 라이브러리가 있으며 JavaScript는 강력한 프론트 엔드 프레임 워크를 가지고 있습니다.

JavaScript 프레임 워크 : 현대적인 웹 개발 파워JavaScript 프레임 워크 : 현대적인 웹 개발 파워May 02, 2025 am 12:04 AM

JavaScript 프레임 워크의 힘은 개발 단순화, 사용자 경험 및 응용 프로그램 성능을 향상시키는 데 있습니다. 프레임 워크를 선택할 때 : 1. 프로젝트 규모와 복잡성, 2. 팀 경험, 3. 생태계 및 커뮤니티 지원.

JavaScript, C 및 브라우저의 관계JavaScript, C 및 브라우저의 관계May 01, 2025 am 12:06 AM

서론 나는 당신이 이상하다는 것을 알고 있습니다. JavaScript, C 및 Browser는 정확히 무엇을해야합니까? 그들은 관련이없는 것처럼 보이지만 실제로는 현대 웹 개발에서 매우 중요한 역할을합니다. 오늘 우리는이 세 가지 사이의 밀접한 관계에 대해 논의 할 것입니다. 이 기사를 통해 브라우저에서 JavaScript가 어떻게 실행되는지, 브라우저 엔진의 C 역할 및 웹 페이지의 렌더링 및 상호 작용을 유도하기 위해 함께 작동하는 방법을 알게됩니다. 우리는 모두 JavaScript와 브라우저의 관계를 알고 있습니다. JavaScript는 프론트 엔드 개발의 핵심 언어입니다. 브라우저에서 직접 실행되므로 웹 페이지를 생생하고 흥미롭게 만듭니다. 왜 Javascr

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구