Java Script = prototype-based programming
=> 객체지향 언어가 가지고 있는 문법을 비슷하게 사용하면서 함수형 언어의 특성을 가지고 있다!
(두 언어에 대해서 깊게 알지는 못하지만 그렇다고 한다...)
객체?
객체란 서로 연관된 변수와 함수를 그룹핑한 그릇이라고 할 수 있다. 객체 내의 변수를 프로퍼티, 함수를 메소드라고 부른다.
이때 연관된 변수와 메소드는 독립성을 가지게 된다. 이는 여러 완제품의 부품으로 사용될 수 있다는 것이다.
즉, 우리는 좋은 부품, 로직을 만드는 것 이 우리의 목표!!!!!
생성자(constructor): 객체를 만드는 역할을 하는 함수
먼저,
function Person( ) {}
let p0 = Person( );
p0
=> undifined
p0 를 호출하면 당연히 위와 같이 undifined 가 뜬다..
하지만, 똑같은 코드에서 "new" 라는 키워드를 추가하게 되면,
function Person( ) {}
let p = new Person( );
p
=> Person { }
-> new를 함수 앞에 붙이게 되면 ( EX => new func) 이 맥락에서 함수는 생성자 라고 불리게 된다.
= 함수에 new를 붙이면 빈 객체(object)를 return 하게 된다.
-> 예시
Person 이라는 함수에 new를 붙이므로 Person은 생성자가 된다.
'egoing'인자로 name에 전달하였고,이로 인해 p1이라는 객체의 name 이라는 프로퍼티의 값은 'egoing'이 된것이다.
introduce라는 프로퍼티에 function을 할당하여 p1이라는 객체는 introduce라는 method를 가지게 된다.
p1과 p2에 각 각 Person을 생성자로 사용하여 객체로 만들었는데, 이를 통해 introduce라는 메소드를 단 한번만 정의할 수 있게 된다.
이렇게 생성자 함수 안에 새롭게 생성될 객체의 프로퍼티와 메소드를 기술하여 코드의 재사용성과 중복의 제거라는 효과를 얻을 수 있다.