> 웹 프론트엔드 > JS 튜토리얼 > JS 생성자의 오버로딩 및 팩토리 메소드에 대한 기본 지식

JS 생성자의 오버로딩 및 팩토리 메소드에 대한 기본 지식

WBOY
풀어 주다: 2016-05-16 17:38:15
원래의
863명이 탐색했습니다.

앞에

라고 써있어요

때로는 여러 가지 방법으로 개체를 초기화하고 싶을 때가 있습니다. 예를 들어 생성자

의 매개변수 목록을 전달하여 초기화하는 대신 요소 배열을 통해 Set 객체를 초기화합니다.

과부하

이 생성자 메서드를 오버로드하면 전달된 다양한 매개변수에 따라 다양한 초기화 메서드를 실행할 수 있습니다.

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

function Set() {
이것 .values ​​​​= {}; // 이 개체의 속성을 사용하여 이 컬렉션을 저장합니다.
this.n = 0; // 컬렉션의 값 수

// 유사 배열 객체가 전달되면 이 요소는 집합에 추가됩니다
// 그렇지 않으면 모든 매개변수를 집합에 추가합니다
if(arguments.length === 1 && isArrayLike(arguments[0])) {
this.add.apply (this, 인수[0]); //apply()를 사용하여 컬렉션에 객체를 추가합니다.
}else if(arguments.length > 0) {
this. add.apply(this, 인수); // 컬렉션에 모든 매개변수를 추가하려면 add() 메서드를 사용하세요.
}
}

이 코드에 정의된 Set() 생성자는 요소 집합을 매개변수 목록으로 명시적으로 전달하거나 요소 배열을 전달할 수 있습니다. 하지만 이 생성자는 모호합니다. 컬렉션의 매개변수가 배열인 경우 이 생성자를 통해 컬렉션을 생성할 수 없습니다(이를 위해서는 먼저 빈 컬렉션을 생성한 다음 명시적으로 add() 메서드를 호출해야 합니다).

팩토리 방식

클래스 메서드는 클래스의 인스턴스를 반환하는 데 사용됩니다.

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

// 팩토리 메소드는 Set 객체를 초기화합니다. 배열을 통해
Set.fromArray = function(arr) {
var s = new Set();
s.add.apply(s, arr);
return s;
} ;

다른 이름을 가진 팩토리 메소드는 다른 초기화를 수행하는 데 사용됩니다. 그러나 생성자는 클래스의 공개 식별자이므로 각 클래스에는 생성자가 하나만 있을 수 있습니다. 그러나 이는 반드시 따라야 하는 규칙은 아닙니다.

보조 생성자

Set()을 함수로 호출하여 이 새 객체를 초기화합니다

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

// Set의 보조 생성자를 정의합니다. type
function SetFromArray(arr) {
// Set()을 함수로 호출하여 이 새 객체를 초기화합니다
// arr의 요소를 매개변수로 전달
Set.apply(this, arr) ;
}
//SetFromArray가 Set 인스턴스를 생성할 수 있도록 프로토타입을 설정합니다.
SetFromArray.prototype = Set.prototype;

JavaScript에 불가능한 것은 없습니다. 예상치 못한 일만 있을 뿐입니다

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿