ECMAScript6은 이미 클래스를 지원하지만 이전 버전 중 어느 것도 클래스를 지원하지 않지만 일부 방법은 클래스를 시뮬레이션하는 데 사용할 수 있습니다.
JS의 클래스는 핵심 요점이자 어려운 점이며 종종 모호하다고 느낍니다.
먼저, JS의 세 가지 매우 중요한 지식을 강조하고 싶습니다 : 이것은 프로토 타입 및 생성자입니다.
클래스를 정의하는 방법 (시뮬레이션) 클래스를 요약하겠습니다.
1. 공장 모델
함수 createObject (이름, age) {var obj = new Object (); obj.name = 이름; obj.age = 나이; obj.getname = function () {return this.name; }; obj.getage = function () {return this.age; } return obj;} var obj2 = createObject ( "wang wu", 19); console.log (obj2.getName ()); console.log (obj2.getage ()); console.log (obj2.constructor);공장 모드 방법은 객체를 만듭니다. 공장 모드는 허용 된 매개 변수를 기반으로 필요한 정보를 포함하는 객체를 만들 수 있습니다. 이 방법은 무한히 여러 번 호출 될 수 있으며 매번 2 개의 속성과 2 가지 방법을 포함하는 객체를 반환합니다. 공장 패턴은 유사한 객체를 만드는 문제를 해결하지만 객체 인식 문제를 해결하지는 않습니다.
2. 생성자 방법
기능인 (이름, 나이, 직업) {this.name = 이름; this.age = age; this.job = job;} person.prototype = {생성자 : person, getName : function () {return this.name; }, getage : function () {return this.age; }, getJob : function () {return this.job; }} var p = new Person ( "Ermazi", 18, "Worker"); console.log (p.constructor); console.log (p.getName ()); console.log (p.getage ()); console.log (p.getJob ());생성자 방법은 객체의 소유권 문제를 결정하고 객체의 유형을 결정할 수 있지만, 생성자의 방법은 각 객체에서 재현되어야하므로 일부 성능 문제가 발생합니다.
3. 프로토 타입 모드
function person () {} person.prototype = {생성자 : 사람, 이름 : "Zhang San", 나이 : 21, 직업 : "교사", getName : function () {return this.name; }, getJob : function () {return this.job; }} var p = new Person (); console.log (p.getName ()); // Zhang San Console.log (p.getJob ()); // Theackervar p2 = new Person (); p2.name = "li si"; console.log (p2.getName ()); // li si인스턴스 코드에서 객체 인스턴스가 프로토 타입의 값에 액세스 할 수 있지만 프로토 타입에서 값을 다시 작성할 수는 없습니다. 프로토 타입으로 복제 된 속성이 객체 인스턴스에 정의되면 속성은 프로토 타입의 속성을 차단하지만 다시 작성하지 않습니다.
4. 포장 (지금은 그것을 부르자)
var dog = {createog : function () {var dog = {}; dog.name = "Wangwang"; dog.sayhello = function () {console.log ( "Hello World!"); }; 반환 개; }}; var dog = dog.createdog (); dog.sayhello ();모든 코드를 캡슐화하고 인스턴스 객체를 전체적으로 반환하는 것입니다.이 객체는 공장 패턴과 약간 유사합니다.
JS 정의 클래스의 위의 몇 가지 방법 (권장)은 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.