new
new 연산자는 생성자 함수를 이용해서 새로운 객체 인스턴스(Instances)를 만들때 사용하는 연산자이다.
물론 객체를 만들때 {}를 사용하여 쉽게 만들 수 있지만 유사한 객체를 여러개 만드는 것에 대해선 한계가 있다.
alistar와 alistar2는 키, 프로퍼티가 같다. 그러면 새로운 객체를 만들때마다 {}를 사용하면 생성자 함수를 사용할 필요 없이 간단하게 만들 수 있는데 왜 굳이 생성자 함수와 new를 사용해야할까?
Constructor(생성자)
JAVA에서는 Class가 객체를 생성한다면 자바스크립트 생성자(constructor)함수가 그 역할을 대신한다.
만약 위의 객체처럼 키, 밸류가 2개뿐이 아니라 100개가 있고 매소드도 100개가 있고 또 객체의 각각 마다 속성이 다르다면 우리가 작성할 코드의 양은 엄청많아질 것이다. 하지만 생성자 함수를 이용하면 마치 객체를 만드는 공장 기계에서 다양한 부품을 넣어 같은 제품이지만 다른 속성의 제품을 만들수있듯, 여러 객체를 무한정 만들 수 있다. 리터럴을 사용하여 만드는 것보다 훨씬 유연하며 유지보수에도 좋다.
Instanceof
instanceof 연산자는 객체가 특정 생성자 객체에 속하는지 아닌지를 확인할 수 있다.
정확히 말하면 인스턴스의 프로토타입 체인에 constructor.pototype이 있는지 확인한다.
Instance
'클래스나 생성자 객체를 사용하여 메모리에 할당한 자료'라고 보면 되겠다.
메로리에 할당이 되면 자유롭게 쓸 수가 있고 변형시킬 수가 있다. 인스턴스를 만드는 방법은 위에서 연습했던 것처럼 생성자를 이용해서 만들 수도 있고 선언문, 리터럴등 다양한 방법이 있다.
이렇게 만들어진 인스턴스릐 가장 큰 특징은 원래 객체인 클래스나 프로토타입이 가지고 있는 프로퍼티(property)와 메소드(method)를 모두 상속 받는 것이다. 객체 지향의 가장 큰 특징인 상속이 들어갔다.
참고 자료
댓글