연습/개발언어

5.자바스크립트 실행 순서, 값 복사 등

TimeSave 2022. 1. 20. 21:48

 

자바스크립트 실행 순서

 

- 함수중 웹 브라우저에 처리를 부탁하는 함수가 있다.

웹 브라우저가 처리하고, 처리가 완료되었다는 것을 JavaScript에 알려줌.

현재 실행중인 다른 코드의 실행이 끝나기 절에는 실행이 안됨.

 

ex) 타이머 함수, 웹 요청 함수

alert('A');

setTimeout(function() {

alert('B');

}, 0 );

alert('C');

 

출력 : A, C, B

timeout은 타이머 함수로, alert함수들이 끝나기 전에는 실행이 되지 않음.

 

 

 

 

 

 

화살표 함수 - 기존의 코드를 쉽게 사용하기 위해 ECMA6에서 추가.

 

사용법

( ) => { }

; 한 줄이라면 중괄호를 생략해도 됨. return을 쓰지 않아도 리턴함

 

ex)

<script>

const multiply = (a, b) => a*b;

alert(multiply(1,2) );

alert(multiply(3,4) );

</script>

 

 

 

익명함수와 비슷하나, this 키워드의 의미가 다름

 

익명 함수 : 함수 자체에 바인딩되어 있는 객체

화살표 함수 : 전역 객체

 

바벨도 화살표 함수를 익명함수로 단순 변환함.

this키워드를 주의해서 사용해야 함.

 

화살표 함수 사용조건

- 프로토타입을 사용하지 않고 ECMA6에서 추가된 클래스를 사용.

- jQuery의 문서 객체 조작에서 this가 아니라 event.currentTarget을 사용

 

전개연산자 ' ... '

; 함수 또는 배열에 적용.

 

ex) 가변 매개변수 함수

 

function test(...numbers){

alert(numbers[0]);

alert(numbers[1]);

alert(numbers[2]);

 

}

 

test(1,2,3);

 

 

 

 

옵션 객체 : 함수의 매개변수로 전달하는 객체.

 

 

 

JavaScript의 값 복사

 

- 기본자료형(= 깊은복사, 숫자,문자열, 불) : 값만 복사.(독립적임)

=> 임시 변수를 만들어 값을 복사하고 대입하면 깊은복사가 된다.

=> 반복문을 쓰게 되고, Clone이라고 생각하면 된다.

 

 

- 참조복사(=얕은복사, 객체) : 주소를 복사.(종속적임)

객체를 저장하면, 객체를 메모리 어딘가에 만들고, 그 주소를 저장한다.

=> Array를 복사하면, 원본 값이 변경하면, 복사한 변수의 내부의 값도 변경된다. (적절한 표현인지는 모르겠다)

 

- 깊은 복사를 하고싶은 경우는 underscore.js 의 clone() 메서드를 사용하면 된다.

 

 

 

전개연산자 & 배열 테크닉

- ECMA6에서 추가

 

 

- 배열 복제 by 전개연산자

ex)

const originalArray = [1,2,3,4,5] ;

const newArray = [...originalArray];

// 깊은 복사임. 출력해 보면 값이 다른 것을 알 수 있다.

 

 

- 배열 병합

 

ex1)const arrayA = [1,2,3,4,5];

const arrayB = [52, 273, 103, 32, 57];

 

const newArray = [...arrayA , ...arrayB];

alert(newArray);

 

출력 : 1, 2, 3, 4, 5, 52, 273, 103, 32, 57

 

ex2)

const originalArray = [52, 273, 103, 32, 57];

const newArrayA = [1, 2, 3, 4, 5, ... originalArray];

const newArrayB = [...originalArray, 1, 2, 3, 4, 5];

 

ex3) 바벨을 활용 한다면, 변환 때 stage를 활성화 하여.

----------------------------------------------------------------

const originalObject = {

name : '윤인성'

birthDay : new Date(2016, 12 - 1, 9). toString()

};

const newObject = {...originalObject };

---------------------------------------------------------------

위와 같이 사용할 수 있다.

 

 

 

 

 

 

 

7. 생성자 함수

; 객체를 생성할 때 사용하는 함수

 

ex)

----------------------------------------------------------------

function 생성자 함수 이름 () {

this.속성이름

this.속성이름

}

생성자 함수 이름. prototype. 메서드 이름

-------------------------------------------------------------------

 

- 관행 : 함수 이름은 대문자로 시작

ex)XMLHttpRequest()

 

- 객체[ 인스턴스] 생성 : new키워드

 

ex) function Student(){}

var student = new Student();

 

- 관련용어

인스턴스 : 생성자 함수를 기반으로 생성한 객체

프로토타입 : 생성자 함수로 생성한 객체들이 공동으로 갖는 공간.

: 일반적으로 메서드를 선언하는 공간.

 

7.1 this키워드

- 생성자 함수 안에서 객체의 속성을 지정하는 키워드.

 

ex1)속성 생성

function Student(name, korean, math, english, science) {

this.이름 = name;

this.국어 = korean;

this.수학 = math;

this.영어 = english;

}

var student = new Student('윤하린', 96, 98, 92);

 

 

ex2)메서드 생성

function Student(name, korean, math, english){

this.이름 = name;

this.국어 = korean;

this.수학 = math;

this.영어 = english;

 

this.getSum = function(){

return this.국어 + this.수학 + this.영어 ;

};

 

this.getAverage = function(){

return this.getSum()/4;

};

 

this.toString = function () {

return this.이름 + '\t' + this.getSum() + '\t' + this.getAverage();

};

}

 

 

 

 

 

'연습 > 개발언어' 카테고리의 다른 글

Kotlin  (0) 2022.12.17
Java 기초 1  (0) 2022.01.20
4. JavaScript 함수  (0) 2022.01.20
3.JavaScript 조건문, 배열  (0) 2022.01.20
2. JavaScript 기초 용어 정리  (0) 2022.01.20