true or falsenullundefinednumberstringsymbol (ES6에서 처음 생긴 원시타입입니다.)Objectconst foo = function (baz) {};
foo.name; // "foo"
foo.length; // 1foo.bar = "baz";
foo.bar // "baz"1급 객체의 조건
- 다른 함수의 인자값으로 넘겨질 수 있다.
- 변수나 데이터에 할당 가능하다.
- 객체의 리턴 값으로 리턴 가능하다.
const foo = {};
foo.bar = function () { console.log("baz"); };
foo.bar();자바스크립트에서 생성자 함수란 리턴값으로 생성하는 함수를 객체 그 자체로서 반환하는 함수입니다.
Object에 새로운 프로퍼티들을 할당하기 위해 this를 함수의 몸통 안에서 사용할 수 있습니다. => 캡슐화 가능 const Foo = function () {
this.bar = "baz";
};
const qux = new Foo()
qux; // { bar: "baz" }
qux instanceof Foo; // true
qux instanceof Object; // true
같은 코드를 공유하는 여러가지 객체들을 갖고 싶다면, 생성자 함수를 삽입하는 것은 매우 좋은 선택입니다.
String, Number, Boolean, Function와 같은 원시타입을 new 키워드로 생성하면 원시타입에 대한 래퍼 오브젝트가 생성됩니다.
new String("dog") === "dog"; // false
{
0: "d",
1: "o",
2: "g",
length: 3
}
const foo = "bar";
foo.length; // 3
foo === "bar"; // truelength라는 프로퍼티에 접근하기 위해 자바스크립트는 foo를 오토박싱하고 이것을 래퍼오브젝트에 넣습니다. length 프로퍼티에 접근하고 값을 이용한 뒤에는 지워버립니다. foo라는 원시타입 변수에 전혀 영향을 미치지 않습니다. foo는 여전히 그저 원시 타입 문자열일 뿐입니다.