열정가이
224
2019-04-20 22:35:10
2
240

Javascript 프로토타입 질문입니다.


인사이드 자바스크립트라는 책을 통해 Javascript를 공부하고 있는데 다음과 같은 코드가 책에 나오던군요.


<script>
    var foo = {
        name : 'foo',
        age  : 35,
        gender : 'mane'
    };
    console.dir(foo);

    function Person(name, age, gender, position){
        this.name = name;
        this.age  = age;
        this.gender = gender;
    };

    var bar = new Person('bar', 25, 'woman');
    console.dir(bar);

    var baz = new Person('baz', 25, 'woman');
    console.dir(baz);

</script>


이럴경우, 크롬 콘솔을 통해 보면 _proto_는 객체 리터럴 방식으로 선언한 경우 Object이고, 생성자 함수를 통해 선언한 경우 Person을 가르킨다고 나와있는데, 실제로 해보니까 둘다 Object네요....?!

왜그런가요? 혹시 ES5와 ES6의 차이가 있는건가요?!

0
0
  • 답변 2

  • rezigrene
    838
    2019-04-20 23:19:17

    foo 는  Object 아닌가요?

    bar, baz 는 Person 이고

    0
  • fx
    1k
    2019-04-20 23:25:56

    foo 의 __proto__ 는 Object 의 prototype 입니다.


    foo.__proto__ === Object                      => false

    foo.__proto__ === Object.prototype      => true


    또한 bar , bar 의 __proto__ 는 Person 이 아니고 Persone 의 prototype 입니다.

    bar.__proto__  === Object                    => false

    bar.__proto__  === Object.prototype    => false

    bar.__proto__  === Person                   => false

    bar.__proto__  === Person.prototype   => true


    책의 내용이 잘못 되었거나, 잘못 적으셨을 가능성도 있어 보입니다. 

    ES5, ES6 간의 차이는 없습니다.


    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.