pul8219 / TIL

Today I Learned📒
2 stars 0 forks source link

FE Study) Step11 리뷰 #10

Open pul8219 opened 4 years ago

pul8219 commented 4 years ago

결과물: https://github.com/pul8219/TIL/blob/master/Documents/FrontEnd-Study/step11_object.md

khw970421 commented 4 years ago

잘 읽었습니다. 마지막에 캡쳐한 그림도 인상깊네요

let obj = {}; // 이 코드는
// let obj = new Object(); // 와 같은 의미이다.

이것도 처음알았네요
한마디로

let obj = {
    a:10
}; // 이 코드는
// let obj = new Object(); // 와 같은 의미이다.

function Object(a)
{
    this.a = a;
}
let obj2 = new Object(10)
console.log(obj2.a, obj.a)

이렇게 둘다 하니 같은 값이 나오더군요

읽으면서 조금 궁금한점이 있는데요 proto속성은 모든 객체가 빠짐없이 갖는다고 하셨는데

이부분에 대해 조금 다른생각을 한게 저기 마지막 그림에서 여러개의 객체가 나오잖아요 보기에는 5개가 나온다고 생각하거든요 (저도 생활코딩 거기서 들은 내용으로 이해한거로 말하면

function Person(name,first,second){
    this.name=name;
    this.first=first;
    this.second=second;
}   
// 이 경우 객체가 2개가 생기는데 하나는 Person 객체이고 다른 하나는 Person.prototype 객체이다

결국 proto는 function Person에서는 존재하지않다고 생각해서 모든 객체가 빠짐없이 proto 속성을 가진다란 말에대해 한번 맞는건지 궁금해져서요

https://opentutorials.org/module/4047/24629

이 사이트 한번 보시면서 같이 고민해봐요 저도 확실한게 아니라서요

pul8219 commented 4 years ago

@khw970421 리뷰 감사합니다.

질문 주신 것 보고 링크 남겨주신 생활코딩 링크, 구글링하여 고민해봤는데 제가 Function도 객체인 것을 망각하고 ₩모든 객체가 빠짐없이 proto 속성을 가진다₩ 라고 써버렸네요. 이 말은 형욱님이 고민하신 것 처럼 맞는 말이 아닌 것 같아요. Person 객체는 객체임에도 proto 속성이 없고 Person의 상위 프로토타입은 함수가 정의될 때 같이 생성된 Person의 Prototype Object에 있는 proto 속성으로 알 수 있으니까요! 아마 Function 객체?의 경우 proto 속성이 없는 것 같아요. 이 말 또한 틀린 건 아닌지 더 알아봐야겠어요. 정정할 수 있게 리뷰주셔서 감사드립니다!

khw970421 commented 4 years ago

저도 확실한건 아니지만 뭔가 내용을 보면 객체는 아마 proto 혹은 prototype을 가지는 것이지 않을까 생각되네요

eyabc commented 4 years ago

함수에도 __proto__ 가 있습니다. image

형욱님 리뷰에 댓글을 남겼었는데 이미 prototype 을 잘 공부 했군요! 글도 술술 잘 읽혔고, 읽으면서 머릿속에서 정리가 되었습니다

pul8219 commented 4 years ago

@eyabc 감사합니다.

console.dir()로 출력하면 __proto__가 보이는군요! 은영님이 보여주신 출력결과를 보면 그럼 예제의 Person같은 Function의 경우 __proto__ 가 가리키는 Prototype Link가 Function의 원형...?(f()?)를 가리키고 있다고 봐도 무방할까요? 또 타고 내려가보면 __proto__가 또 있는데 거긴 Object라 표시되어있네요...! 아니면 그냥 Object 객체를 가리키는건가 흠


덕분에 알아가요 👍