[JavaScript] new Function과 new Operator

·2022년 2월 4일

JavaScript

목록 보기
7/9
post-thumbnail

1초전에 기깔나게 처맞은 썰 푼다

일단 new Function과 new Operator는 다르다.

new Function

말 그대로 새로운 함수를 만드는 것 이다.

보통 사용법은

new rabbit([arg1, arg2, arg3 ...], functionbody);

혹은 functionbody만

new rabbit(functionbody);

요렇게

이딴거 왜씀? 이라고 묻는다면
어떤 문자열도 함수로 바꿀 수 있기 때문이라고 한다.
뉴비는 그런거 몰라..


new Operator와 Constructor Function

이건 constructor function을 이용해서, obj를 만드는법이라고 생각..한다..

위에랑 베리 빅한 차이점은
얜 function을 이용해서 object를 만드는거다!!!

Constructor function이 뭔데 10덕아

  1. 대문자로 시작한다.
  2. new 연산자를 붙여서 시작한다.
  3. 이거 빼곤 일반 함수랑 차이점이 없다.

사용방법

let rabbit = new Rabbit(arg)

요런식이다!!
이딴거 왜씀? 물어보면
재사용할 수 있는 객체 생성 코드를 구현하는 것
이라고 한다..

으음.. 그냥 변수에 넣으면 안돼요?
-> 걍 함수 품은 변수(함수) 되는거지 객체 안됩니다.


잠깐! 모든 함수는 생성자 함수가 될 수 있다는 점을 잊지 마시기 바랍니다

라고 하단에 써있던데.. 그럼 둘을 어떻게 구분해요?

let animal = {
            eats: true
        };

        function Rabbit(name) {
            this.name = name;
        }

        Rabbit.prototype = animal;

        let rabbit = new Rabbit("White Rabbit");
        alert(rabbit.eats)

Rabbit을 깜빡하고 rabbit으로 써두면 내가 constructor function인지 그냥 new function인지 어케 알아요

new Function은 arguents, functionbody 혹은 functionbody를 받고,
Constructor Function은 arguments를 받는다.

+) 선생님으 가르침
관습적으로 클래스가 대문자로 시작하고 new Function 은 이 자체로 하나의 쓰임새를 갖기 때문에 혼동될 일은 없을 것이다.
심지어 뉴 오퍼레이터를 사용하는 구문은 대게 인스턴스화 시킬 때만 쓴다.

profile
어?머지?

0개의 댓글