https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object-oriented_JS
복제하는 것보다. 기능이 클래스 간에 다른 경우 필요에 따라 해당 클래스에서 직접 특수 기능을 정의할 수 있습니다.
=> 특별히 추가하거나 그런것도 가능
동일한 기능을 구현하는 여러 개체 유형의 기능에 대한 멋진 단어는 다형성 입니다. 혹시라도 궁금하시다면.
=> 정확히 여기에 쓰인 개념은 아닌거 같지만 덕분에 어떤 느낌인지 알게되었다.
const salva = createNewPerson('Salva');
salva.name;
salva.greeting;
const salva = createNewPerson('Salva');
salva.name;
salva.greeting();
=> 여기서 하나 깨달음.
함수 다음에 () 괄호의 역할
위쪽이 내가 처음에 썼던 코드.
alert이 실행되지 않고 그냥 콘솔에 코드가 똘망하게 나오기만 함
아래가 정답 코드 ()으로 함수가 바로 실행됨
예전 배웠던게 생각난다 ()는 실행을 바로 시키는 코드
참고로 obj 객체에 함수를 넣을때 ()를 넣으면 에러가 발생
obj.greeting() = function() {
alert('hi'~~~~~~)
}
콘솔창에 에러가 발생..
이것은 충분히 잘 작동하지만, 다소 시간이 오래 걸립니다. 객체를 생성하고 싶다는 것을 안다면 왜 새로운 빈 객체를 명시적으로 생성하고 반환해야 합니까? 다행히 JavaScript는 생성자 함수의 형태로 편리한 바로 가기를 제공합니다. 이제 하나 만들어 봅시다!
=> 어! 분노가 느껴지네 ㅋㅋ 코드는 규칙을 포함하여 짧아져야지 암
=> 그래서 this를 활용한다.
function Person(name) {
this.name = name;
this.greeting = function() {
alert('Hi! I\'m ' + this.name + '.');
};
}
=> this가 인스턴트를 지칭해주고
let person1 = new Person('Bob');
let person2 = new Person('Sarah');
=> new가 브라우저에 새 객체 인스턴스를 만들고 싶다고 명시적으로 말해주는 것을 말한다.
=> 컴퓨터는 이것이 무엇인지 정확하고 구체적으로 말할 수록 좋아한다.
생성자 함수를 호출할 때 greeting()매번 정의하므로 이상적이지 않습니다. 이를 피하기 위해 프로토타입에 함수를 정의할 수 있습니다. 이는 나중에 살펴보겠습니다.
=> 프로토타입은 js에만 있는 부모에게 상속 받는 속성 or 메소드(DNA)
지금까지 객체 인스턴스를 생성하는 두 가지 다른 방법 , 즉 객체 리터럴을 선언 하고 생성자 함수를 사용하는 방법을 살펴보았습니다 (위 참조).
=> 빈 객체를 쉽게 만들기
=> 인스턴스를 그대로 카피