inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 비기너: 튼튼한 기본 만들기

2. 자바스크립트 객체 형태, JS의 OOP 구현 방법, prototype 형태/연결

선생님 안녕하세요 질문있습니다.

213

강민성

작성한 질문수 4

0

좋은 강의 잘 보고 있습니다. 감사합니다.

25초쯤에 Object 오브젝트 형태는 인스턴스를 생성할 수 없다고 하셨는데.. 이전 강의 Object 오브젝트(ES3) 1번 강의에서는 { } 리터럴이나 new 연산자도 인스턴스를 생성한다고 하셨습니다. new연산자를 사용했으므로 abc인스턴스라고 부르고 아래의 obj는 오브젝트로 부른다고 하셨었는데요..(아래 사진)

이 부분이 약간 헷갈립니다 ㅠ 말이 다른건지.. 제가 이해를 잘 못하고 있는건지.. 오브젝트와 인스턴스를 구분하기위해서 저렇게 말씀하신걸로 이해하면 될까요? 

oop javascript

답변 1

1

김영보

많이 생각한 좋은 질문입니다.

var obj = {} 형태처럼 Object 리터럴을 작성하면, 자바스크립트 엔진이 코드를 해석하면서 인스턴스를 생성합니다. 즉, 개발자가 new 연산자로 인스턴스를 만드는 것과 같은 것을 엔진이 합니다.

아래 코드는 Object 리터털에 함수를 작성한 형태이며, 이 형태는 이미 sports 인스턴스를 생성한 상태이므로 new sports()로 인스턴스를 생성하지 못합니다.

new sports()를 실행하면 에러가 발생하며 이유는, new 연산자가 { } 안의 constructor를 호출하게 되는데 { }에 constructor가 없기 때문입니다. 
sports.getItem() 형태로 작성해야 getItem() 함수가 호출됩니다. 이 형태를 강좌에서 메소드가 아니라 함수로 부릅니다.

var sports = {
  item: "축구",
  getItem: function(){
    return this.item;
  }
};
console.log(sports.getItem());

 

0

강민성

아.. 선생님 감사합니다. 이미 인스턴스가 있기때문에 다시 인스턴스를 생성하지 못한다는 뜻이였군요. 1회독으로는 애매모호했던 것들이 매번 반복해서 볼때마다 하나씩 이해되는 느낌입니다. 

1

김영보

예, 좋습니다. 반복이 지름길입니다. 볼 때마다 생각을 더 넓고 깊게 하게 됩니다. 

프론트엔드 부트캠프 가기 전, 짧은 감사 인사드립니다!

2

123

2

섹션10 3. Object 프리미티브 값 구하기에서 질문있습니다.

1

172

2

섹션3의 1강 연산자, 표현식 강의에서 표현식 질문이 있습니다.

0

160

2

섹션 1. 6번째 강의 질문입니다.

1

265

1

선생님 Objcet 질문 있습니다.

0

308

2

forEach문을 활용한 코딩시간 풀이

0

625

1

sort 코딩 시간 풀이

0

300

1

코딩 시간 풀이 올려봅니다.

0

235

1

인덱스 코딩시간 문제풀이

0

389

1

for문 코딩 시간 답제출

0

314

1

3:39 sort에 들어가서 one,two 파라미터질문입니다.

0

199

0

퀴즈 질문 및 정답

0

365

1

오브젝트

0

292

1

인스턴스 목적

1

249

1

[코딩시간 01] 3항 연산자로 작성했을 때, 각 값..?

0

277

1

Undefined === Null; // true???

0

200

1

indexOf의 파라미터에 음수를 작성 했을때에 대한 질문입니다.

0

1041

5

length 값 변환 논리에 대한 질문입니다.

0

220

1

상수 변수 선언에 대해

0

241

1

코딩 시간 (for문) 풀이

0

261

1

Object vs object

1

509

1

코딩 시간 풀이입니다.

0

204

1

log(add(1, 2, 3, 4));

0

186

1

코딩시간 답 제출

0

202

1