inflearn logo
강의

Course

Instructor

Life Coding - JavaScript Basics

How to Use Object API

왜 객체는 keys함수를 쓸 수 없나요?

Resolved

294

nahia

1 asked

0

안녕하세요, 먼저 양질의 강의 늘 감사드립니다 :)

다름이 아니고 아래와 같은 코드가 있을 때, 왜 3번째라인은 불가능한지 잘 모르겠습니다.

var o = {"name":"egoing", "age":20, "city":"Seoul"}

Object.keys(o);

o.keys(o);

A객체가 B객체를 상속할 때, B객체의 기능을 사용할 수 있고, Object는 모든 객체가 상속하는 객체니까,

var o는 Object를 상속하잖아요...?

그러면 o는 Object의 keys라는 기능을 사용할 수 있어야 할 거 같은데 

왜 쓸 수가 없는지 궁금합니다.

강의 상에서는 keys라는 함수가 toString()함수처럼 Object.prototype 내에 정의되어 있지 않기 때문이라고 하셨지만.

위에 쓴 흐름에 따르면 쓸 수 있어야할 것 같아서요.

아래와 같은 코드를 작성해서 시험해봤을때도,

굳이 Person.prototype.introduce = function(){}으로 정의하지 않아도,

Programmer 객체가 들어간 p2가 introduce()함수를 쓸 수 있더라고요...

function Person(name){ 

this.name = name; 

this.introduce = function(){ return 'My name is '+this.name;}

}

Programmer.prototype = new Person();

var p1 = new Programmer();

p1.introduce(); //출력 : "My name is undefined"

답변 부탁드립니다.

감사합니다

javascript

Answer 2

0

SeungHyuk Shin

쉽게 Object.func()는 Object만 사용할 수있는 함수고 Object.prototype.func() 그 Obejct를 상속받는 객체들이 사용할 수 있는 함수다라고 생각하심 될듯함니다

0

KH K

function o() {

      }

      o.num1 = function () {

        document.write('call num1');

      }

      o.prototype.num2 = function () {

        document.write('call num2')

      };

      var a = new o();

      a.num2();

      o.num1();

      a.num1();

이런 원리 인것 같습니다.

o라는 생성자 함수 안에 num1이 있고 

o생성자 함수의 prototype에 num2가 들어가있습니다.

여기서 생성자함수로 a라는 빈 객체에 o로 만든 객체를 집어넣으면

o라는 생성자 함수의 내용과 생성자 함수의 prototype에 속해있는 num2만 들어가고 num1은 들어가지 않습니다.

고로 new 생성자함수(); 는 생성자 함수의 내용과 생성자함수 안에 있는 prototype만 상속해주고 o.~~로 생성된 함수는 상속해 주지 않습니다!

위의 코드가 적용된 이유는 this라는 객체의 특수성으로 성립 된 것 같습니다.

저도 헷갈렸는데 덕분에 완전이해했습니다 ㅋㅋ;

강의 교안은 따로 없을까요?

0

207

1

배열관련 질문드립니다.

0

344

2

제발 도와주세요

-4

928

1

괄호 질문

0

423

1

new 를 안 붙이는 경우 (섹션19)

0

354

1

무한루프

1

1210

1

혹시 교재는 따로 없을까요?

0

685

0

선생님과 접점을 찾았어요.

0

456

0

new 생성자

0

262

0

sample파일에서 질문있습니다.

3

418

1

password == '111111'

0

508

1

배열

0

281

1

toUpperCase() 에 대해서 질문입니다.

0

251

0

강의를 들으면서 비쥬얼스튜디오 코드를 사용하여도 상관 없을까요?

0

623

2

\'와 변수를 같이 쓰면 안 되나요?

0

336

2

왜 에러가 났는지

0

352

1

첫번째 for문에서 i값 5가 5번 출력 되는 이유

0

502

3

name이 뭐죠

0

275

1

첫번째 예시문에서 값이 왜 5가 5번 반복되는지 궁금합니다.

0

700

3

grades 객체에 key값 show의 function을 지정하는 지점에서 오류가 발생합니다.

0

295

1

function오류

0

391

1

객체 출력차이(document.write, console.log)

0

312

0

자바스크립트에서 함수가 아닌 곳에서 정의된 변수

0

188

0

동일한 이름의 전역변수 선언이 가능한가요

1

741

1