본문 바로가기

자바스크립트-스터디[2021-10-05~완료]

17 생성자 함수에 의한 객체 생

어라라 왜 VegasTracker는 함수인데

object로 타입오브가 뜨는거지??

 

function VegasTracker

 

그건 생성자 함수를 사용해서 그렇다!

Cicle 생성자 함수도 typeof 하면 Object가 나온다.
이렇게 생성자 함수를 사용하면 된다.

 

 

person 객체 내용은 프로퍼티키: 프로퍼티 값 으로 출력된다

 

new String(내용) 으로 객체를 만들면 배열처럼 글씨가 하나씩 들어간다
new Number(내용)으로 객체를 만들면 Number{내용}으로 뜬다
new Boolean(값)으로 객체를 생성하면 Boolean {값}으로 출력된다
const 라 값 수정이 불가능하다.

 

함수 객체 func2에 console.dir를 넣어봐도.. 딱히 달라진게없는듯하다
func 와  func2를 프로퍼티를 비교해봤지만 차이가 없어보인다.
const 로 배열 객체를 넣으면
새로운 값을 할당하지 못한다. argument가 더 증가하는 것을 적용 안됨
argument의 개수가 같다면, 값이 바뀔까? 안바뀐다. 에러 발생
그렇다면 원시타입이 아니라 레퍼런스 타입일테니 값을 하나만 바꿔볼까? 적용된다. 배열[번째] 성공! 배열.키 실패!

 

 

 

정규식 만들기

/ab+c/i 정규식 해석??? abc가 연달아서 와야하나봄
/d(b+)d/g의 정규표현식 해석????? 해석 어케 하는거야 d라는 글씨 뒤에 bbb는 여러개,해도 되나봄.
Date 생성자 함수에 의한 Date 객체 생성

 

 

this 는 달라진다

함수 호출 방식 this 가 가리키는 값
일반 함수로서 호출 전역 객체
메서드로서 호출 메서드를 호출한 객체
생성자 함수로서 호출 생성자 함수가 미래에 생성할 인스턴스

전역객체,                   메서드를 호출한 객체 obj,           생성자 함수가 생성할 인스턴스 inst
new 없이 생성자 객체 만들면 안만들어짐. 그리고 전역객체로 값이 들어감

 

 

foo함수 는 객체다.  foo.prop에 값, foo.method에 함수를 추가하고 값을 가져올 수 있다.
일반적인 함수로서 호출: foo();[[Call]] 생성자 함수로서 호출: new foo(); -> [[Construct]]

 

내부 메서드 [[Call]] 을 갖는 함수 객체 --> callable : 호출 할 수 있는 객체, 함수,

내부 메서드 [[Construct]]를 갖는 함수 객체 --> constructor : 생성자 함수, 호출 할 수 있는 함수

non-constructor : 객체를 생성자 함수로 호출 할 수 없는 함수.

 

 

5) 콘스트럭톨, 논-콘스트럭톨

constructor : 함수 선언문, 함수 표현식, 클래스

non-constructor : 메서드 , 화살표 함수

 

 

6) new 연산자

일반 함수?

생성자 함수?

특별한 형식적 차이는 없다.

 

new 연산자와 함께 함수를 호출하면,

해당 함수는 생성자 함수로 동작한다.

 

내부 메서드 [[Call]]이 호출되는 것이 아니라

[[Constructor]]가 호출된다.

 

 

new를 안붙이고 하면, 전역에 값이 들어간다. 그래서 생성자 함수로 만든거구나. 
circle 변수에 생성자 함수를 new 없이 넣으면.. 호출이 안된다. 할당이 안되는건가??

 

일반 함수 생성자 함수
this --> 전역 객체 window를 가리킨다 this --> 생성자 함수가 생성할 인스턴스를 가리킨다
radius, getDiameter 메서드는 전역 객체의 프로퍼티, 메세드가 됨 생성자 함수의 프로퍼티와 메서드가 됨
첫문자가 소문자 첫문자가 대문자

7) new.target

생성자 함수가 new 연산자 없이 호출 되는 것을 방지.

ES6에서 제공.

 

new.target 은 함수 자신을 가리킨다: new 연산자와 함께 + 생성자 함수 호출

객체, 함수 는 new 를 사용해도 안해도 똑같다.

 

'자바스크립트-스터디[2021-10-05~완료]' 카테고리의 다른 글

ajax  (0) 2021.11.11
18 함수와 일급 객체  (0) 2021.11.01
16 프로퍼티 어트리뷰트  (0) 2021.10.30
[4주차] 15장 let, const 키워드와 블록 레벨 스코프  (0) 2021.10.27
13 스코프  (0) 2021.10.19