true
or false
null
undefined
number
string
symbol
(ES6에서 처음 생긴 원시타입입니다.)Object
const foo = function (baz) {};
foo.name; // "foo"
foo.length; // 1
foo.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"; // true
length
라는 프로퍼티에 접근하기 위해 자바스크립트는 foo
를 오토박싱
하고 이것을 래퍼오브젝트에 넣습니다. length
프로퍼티에 접근하고 값을 이용한 뒤에는 지워버립니다. foo
라는 원시타입 변수에 전혀 영향을 미치지 않습니다. foo
는 여전히 그저 원시 타입 문자열일 뿐입니다.