왜 객체는 keys함수를 쓸 수 없나요?
안녕하세요, 먼저 양질의 강의 늘 감사드립니다 :)
다름이 아니고 아래와 같은 코드가 있을 때, 왜 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"
답변 부탁드립니다.
감사합니다
Answer 2
0
쉽게 Object.func()는 Object만 사용할 수있는 함수고 Object.prototype.func() 그 Obejct를 상속받는 객체들이 사용할 수 있는 함수다라고 생각하심 될듯함니다
0
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

