1. 생성자 란 무엇입니까?
생성자는 Java, C ++ 및 PHP와 같은 일부 객체 지향 언어에서 매우 일반적입니다. JavaScript에서 생성자는 먼저 정상적인 함수이며 새 연산자를 사용하여 호출 할 수 있으며 특수 유형의 객체를 생성합니다.
코드 사본은 다음과 같습니다.
// "Benjamin"은 생성자입니다
var benjamin = New Benjamin ( "zuojj", "male");
위의 예에서 벤자민은 벤자민 대상이므로 어떻게 인스턴스화됩니까?
코드 사본은 다음과 같습니다.
기능 Benjamin (사용자 이름, 섹스) {
this.username = username;
this.sex = 섹스;
}
var benjamin = New Benjamin ( "zuojj", "male");
// 출력 : Benjamin {섹스 : "male", username : "zuojj"}}
Console.log (Benjamin);
우리가 볼 수 있듯이, "Benjamin"생성자는 단순히 전달 된 매개 변수를 수신 하여이 객체에 할당합니다. 이는 생성자를 새 연산자에 의해 호출 할 때 생성자 의이 객체가 새 작업에 의해 반환 된 객체에 할당되기 때문입니다.
이것은 위의 코드가 다음과 같음을 의미합니다.
코드 사본은 다음과 같습니다.
벤자민 = {
"사용자 이름": "Zuojj",
"섹스": "남성"
}
2. 생성자를 사용하는 이유
생성자가 사용되는 이유는 몇 가지가 있습니다.
1. 생성자를 사용한다는 것은 이러한 모든 객체를 동일한 기본 구조를 사용하여 만들 수 있음을 의미합니다.
2. 생성자를 사용하면 "Benjamin"객체가 "Benjamin"기능의 인스턴스로 명시 적으로 표시됨을 의미합니다.
코드 사본은 다음과 같습니다.
기능 Benjamin (사용자 이름, 섹스) {
this.username = username;
this.sex = 섹스;
}
var benjamin = New Benjamin ( "zuojj", "male");
var ben = {
"사용자 이름": "Zuojj",
"섹스": "남성"
}
// 출력 : true
Console.log (벤자민 인스턴스);
// 출력 : false
Console.log (Ben inascess of Benjamin);
3. 생성자를 사용하여 여러 인스턴스를 공유하기 위해 프로토 타입에서 공개 메소드를 정의 할 수 있음을 의미합니다.
코드 사본은 다음과 같습니다.
기능 Benjamin (사용자 이름, 섹스) {
this.username = username;
this.sex = 섹스;
}
Benjamin.prototype.getName = function () {
issername을 반환하십시오.
}
var benjamin = New Benjamin ( "zuojj", "male");
var ben = New Benjamin ( "레몬", "여성");
// 출력 : Zuojj
Console.log (Benjamin.getName ());
// 출력 : 레몬
console.log (ben.getName ());
3. 주목할만한 것들
1. 키워드
생성자를 인스턴스화 할 때 새 키워드를 사용하는 것을 잊지 않아야합니다. 새 키워드 사용 여부는이 개체에 큰 영향을 미칩니다. 새로운 키워드가 없으면이 객체는 글로벌 오브젝트 (브라우저의 창과 노드의 글로벌)를 가리 킵니다. 따라서 생성자를 정의 할 때는 함수 이름의 첫 번째 문자가 대문자가 권장됩니다.
2. 호출 된 함수에 명시적인 리턴 표현식이 없으면이 개체는 암시 적으로 반환되며, 이는 새로 생성 된 객체입니다. 그렇지 않으면 결과는 영향을받지 만 반환 된 객체가
코드 사본은 다음과 같습니다.
함수 바 () {
반환 2;
}
var bar = new bar ();
// 새로 생성 된 개체를 반환합니다
// 출력 : bar {}
Console.log (bar);
기능 test () {
this.value = 2;
반품 {
Foo : 1
};
}
var test = new test ();
// 반환 된 객체
// 출력 : 개체 {foo : 1}
Console.log (테스트);
우리가주의를 기울여야 할 것은 다음과 같습니다.
a) new bar ()는 숫자 2의 문자 그대로 값이 아닌 새로 생성 된 객체를 반환합니다. 따라서 새 bar (). 생성자 === bar이지만 반환 된 숫자 객체는 결과가 다릅니다.
b) 여기에서 얻은 새로운 test ()는 다음과 같이 새 키워드를 통해 새로 생성 된 객체가 아닌 함수에 의해 반환되는 객체입니다.
코드 사본은 다음과 같습니다.
함수 바 () {
반환 2;
}
var bar = new bar ();
함수 헛간 () {
새 번호 (2)를 반환합니다.
}
var barn = New Barn ();
// 출력 : true
console.log (bar.constructor === bar);
// 출력 : 번호 {}
Console.log (헛간);
// oUputs : false
console.log (barn.constructor === 헛간);
// 출력 : true
console.log (barn.constructor === 번호);
/ * -------------------------------- */
기능 test () {
this.value = 2;
반품 {
Foo : 1
};
}
var test = new test ();
// 출력 : 정의되지 않았습니다
Console.log (Test.Value);
// oUputs : 1
Console.log (test.foo);
위는 생성자의 요약입니다. 초보자에게 도움이되기를 바랍니다. 이 기사에 부적절한 요점이 있다면 비판하고 수정하기를 바랍니다.