자바스크립트 객체 생성자
예시
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
대문자로 된 생성자 함수의 이름을 지정하는 것이 좋습니다.
객체 유형(청사진)(클래스)
이전 장의 예제는 제한적입니다. 단일 개체만 생성합니다.
때때로 우리 는 동일한 "유형"의 많은 객체를 생성하기 위해 " 청사진 "이 필요합니다.
"객체 유형"을 만드는 방법은 객체 생성자 함수 를 사용하는 것 입니다.
위의 예에서 function Person()
는 객체 생성자 함수입니다.
동일한 유형의 객체는 다음 new
키워드로 생성자 함수를 호출하여 생성됩니다.
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
이 키워드 _
JavaScript에서 호출되는 것은 this
코드를 "소유하는" 객체입니다.
의 값은 this
객체에서 사용될 때 객체 자체입니다.
생성자에서 함수 this
에는 값이 없습니다. 새 개체를 대체합니다. 의 값은 this
새 객체가 생성될 때 새 객체가 됩니다.
this
변수가 아니라는 점에 유의하십시오 . 키워드입니다. 의 값은 변경할 수 없습니다 this
.
객체에 속성 추가
기존 객체에 새 속성을 추가하는 것은 쉽습니다.
예시
myFather.nationality = "English";
속성이 myFather에 추가됩니다. 아니 myMother. (다른 사람에게 이의를 제기하지 않음).
객체에 메소드 추가
기존 개체에 새 메서드를 추가하는 것은 쉽습니다.
예시
myFather.name = function () {
return this.firstName + " " + this.lastName;
};
메소드가 myFather에 추가됩니다. 아니 myMother. (다른 사람에게 이의를 제기하지 않음).
생성자에 속성 추가
기존 객체에 새 속성을 추가하는 것과 같은 방식으로 객체 생성자에 새 속성을 추가할 수 없습니다.
예시
Person.nationality = "English";
생성자에 새 속성을 추가하려면 생성자 함수에 추가해야 합니다.
예시
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
이런 식으로 객체 속성은 기본값을 가질 수 있습니다.
생성자에 메서드 추가
생성자 함수는 메서드를 정의할 수도 있습니다.
예시
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.name = function() {
return this.firstName + " " + this.lastName;
};
}
기존 개체에 새 메서드를 추가하는 것과 같은 방식으로 개체 생성자에 새 메서드를 추가할 수 없습니다.
객체 생성자에 메소드를 추가하는 것은 생성자 함수 안에서 이루어져야 합니다:
예시
function Person(firstName, lastName, age, eyeColor) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.eyeColor = eyeColor;
this.changeName = function (name) {
this.lastName = name;
};
}
changeName() 함수는 이름 값을 사람의 lastName 속성에 할당합니다.
이제 다음을 시도할 수 있습니다.
myMother.changeName("Doe");
JavaScript는 이것을 myMother 로 "대체"하여 귀하가 말하는 사람을 알고 있습니다 .
내장 JavaScript 생성자
JavaScript에는 기본 객체에 대한 기본 제공 생성자가 있습니다.
new String() // A new String object
new Number() // A new Number object
new Boolean() // A new Boolean object
new Object() // A new Object object
new Array() // A new Array object
new RegExp() // A new RegExp object
new Function() // A new Function object
new Date() // A new Date object
Math()
개체가 목록에 없습니다 . Math
전역 개체입니다. 키워드 는 new
에서 사용할 수 없습니다
Math
.
알고 계셨나요?
위에서 볼 수 있듯이 JavaScript에는 기본 데이터 유형 String
, Number
및 의 객체 버전이 있습니다 Boolean
. 하지만 복잡한 객체를 만들 이유가 없습니다. 기본 값이 훨씬 빠릅니다.
""
대신 문자열 리터럴 을 사용하십시오 new String()
.
50
대신 숫자 리터럴 을 사용하십시오 new Number()
.
true / false
대신 부울 리터럴 을 사용하십시오 new Boolean()
.
{}
대신 객체 리터럴 을 사용하십시오 new Object()
.
[]
대신 배열 리터럴 을 사용하십시오 new Array()
.
/()/
대신 패턴 리터럴 을 사용하십시오 new RegExp()
.
() {}
대신 함수 표현식 을 사용하십시오 new Function()
.
예시
let x1 = ""; // new primitive string
let x2 = 0; // new primitive number
let x3 = false; // new primitive boolean
const x4 = {}; // new Object object
const x5 = []; // new Array object
const x6 = /()/ // new RegExp object
const x7 = function(){}; // new function
문자열 객체
일반적으로 문자열은 기본 형식으로 생성됩니다. firstName = "John"
new
그러나 다음 키워드 를 사용하여 문자열을 객체로 만들 수도 있습니다 .
firstName = new String("John")
JS Strings 장에서 문자열을 객체로 생성해서는 안 되는 이유를 알아보세요 .
숫자 개체
일반적으로 숫자는 기본 형식으로 생성됩니다. x = 30
new
그러나 다음 키워드 를 사용하여 숫자를 개체로 만들 수도 있습니다 .
x = new
Number(30)
JS Numbers 장에서 숫자가 객체로 생성되어서는 안 되는 이유를 알아보세요 .
부울 객체
일반적으로 부울은 기본 형식으로 생성됩니다. x =
false
new
그러나 부울은 키워드 를 사용하여 객체로 생성할 수도 있습니다 .
x = new Boolean(false)
JS Booleans 장에서 부울을 객체로 생성해서는 안 되는 이유를 알아보세요 .