[1일1js] 초보자를 위한 객체 지향 자바스크립트

Lee Tae-Sung·2021년 8월 9일
0

JS

목록 보기
28/56

초보자를 위한 객체 지향 자바스크립트

https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object-oriented_JS

객체 지향 프로그래밍 — 기본

개체 템플릿 정의

실제 개체 만들기

전문가 수업

복제하는 것보다. 기능이 클래스 간에 다른 경우 필요에 따라 해당 클래스에서 직접 특수 기능을 정의할 수 있습니다.
=> 특별히 추가하거나 그런것도 가능

동일한 기능을 구현하는 여러 개체 유형의 기능에 대한 멋진 단어는 다형성 입니다. 혹시라도 궁금하시다면.

=> 다형성?
https://ko.wikipedia.org/wiki/%EB%8B%A4%ED%98%95%EC%84%B1_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)

=> 정확히 여기에 쓰인 개념은 아닌거 같지만 덕분에 어떤 느낌인지 알게되었다.

생성자와 객체 인스턴스

간단한 예

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)

완성된 생성자 만들기

추가 연습

개체 인스턴스를 만드는 다른 방법

지금까지 객체 인스턴스를 생성하는 두 가지 다른 방법 , 즉 객체 리터럴을 선언 하고 생성자 함수를 사용하는 방법을 살펴보았습니다 (위 참조).

Object() 생성자

=> 빈 객체를 쉽게 만들기

create() 메서드 사용

=> 인스턴스를 그대로 카피

profile
긍정적인 에너지를 가진 개발자, 이태성입니다.

0개의 댓글