yadon
688
2019-06-13 11:28:58 작성 2019-06-13 11:32:40 수정됨
5
281

javascript 생성자, module.exports 여러가지 사용 이유?


이해력이 낮고 예시를 좋아하는 초보자입니다.  본론을 바로 말하자면 


1. javascript에서 생성자(new)를 써야할 경우가 어떤경우가있죠?


2. js파일을 만들어 코딩을 할 때 function 함수명() 이렇게 줄줄이 만드는 것과 , 

class 함수명{ constructor ......            module.exports= 함수명 이렇게 쓰이는 경우가 무엇이 있으며 

어느것이 맞나요 ?상황에 따라 예를 들면?


답변 미리 감사합니다!



0
0
  • 답변 5

  • ....
    2019-06-13 11:34:40 작성 2019-06-13 11:41:27 수정됨

    1. ES6이전 문법에서는 프로토타입을 이용해서 클래스를 만들었습니다.

    (ES6는 js에 대한 버전명이라고 생각하시면 됩니다.)

    이전 클래스 문법은 함수로 구성되어 있었습니다.

    함수에 프로토타입으로 클래스의 프로퍼티와 메서드를 선언하였습니다.

    그것을 이용할 때마다 new 생성자를 사용했습니다.

    (이는 자바의 new생성자를 사용하는 이유와 동일합니다.)


    2. 그것이 ES6부터 나오게 된 새로운 클래스 문법입니다.

    새로운 클래스 문법은 자바의 클래스의 형태를 지니게 되었습니다.

    최근 프론트엔드에서 많이 사용하고 있는 리액트, 뷰, 앵귤러에서는 ES6의 클래스 문법을 사용합니다.

    ES6의 클래스가 좋아서 이전의 함수를 이용한 클래스는 이제 사용하지 않습니다.


    https://poiemaweb.com/es6-class

    위 링크에서 자세한 설명을 하고 있습니다.

    참고바랍니다.

    1
  • yadon
    688
    2019-06-13 11:39:25
    그럼 요즘엔  2번의 형식을 사용하고  1번의 생성자를 이용해 사용한다는거군요?
    0
  • ....
    2019-06-13 11:42:22

    네 yadon님

    생성자에 대한 기호(new)는 ES6에서도 그대로 사용합니다.

    1
  • yadon
    688
    2019-06-13 11:45:18

    감사합니다 :)

    0
  • moonti
    2k
    2019-06-13 14:32:39

    1. var k = {}   구문도 내부적으로는 new Object() 를 호출합니다.생성자를 호출하는 것은 새로운 인스턴스를 만들때면 항상 사용하죠. 이것은 다른 언어랑 비슷합니다.


    2. function Car () {}  의 구문은 함수입니다. 자바스크립트에서 어떤 함수든 생성자 함수나 일반 함수로 호출할 수 있습니다. 그리고, prototype을 이용한 상속을 구현하는 것에 대한 어려움 때문에  es6에서 다른 언어처럼 class 문법을 지원합니다. 그러나 내부적으로는 prototype으로 변형되어 사용되기 때문에 여전히 prototype을 기반한 상속을 사용하는 언어 입니다. class는 문법적으로 지원합니다. 


    module.exports 는 자바스크립트의 문법은 아닙니다.

    모듈 시스템이라고 검색하시면 나올텐데, 저 방식은 노드에서 사용하는 CommonJS의 모듈을 export 하는 방식입니다.

    module이라는 전역 객체인거죠.


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