Study/JavaScript

    [JavaScript_study] 필드(field)

    * 필드(field) > 보통 자바스크립트에서는 constructor에서 주어지는 데이터라면 생략 가능 > 인스턴스를 만들때 초기화가 되어야하는 데이터라면 constructor 윗 부분에 작성해서 초기값(default) 설정 가능 : ex) type = '과일'; * 접근제어자 ( # ) > 객체를 만들었을때 class외부에서 변경이 불가능하게 만들고 싶을때 사용한다. : ex) apple.name = '오렌지' // 외부에서 apple이라는 객체의 name값으로 오렌지를 추가하려고 시도중 > 접근제어자를 이용해서 캡슐화를 할 수있다. > 내부상으로 필요한데이터를 보이지 않도록 수정할 수 없도록 캡슐화해놓는다. > 다른 프로그램언어에서는 private(#), public(기본), protected등을 이..

    [JavaScript_study] static, 인스턴스(instance)레벨, 클래스(Class)레벨

    * static (static 키워드는 클래스의 정적 메서드를 정의한다.) // static 정적 프로퍼티, 메서드 class Fruit { static MAX_FRUITS = 4; // 생성자: new 키워드로 객체를 생성할때 호출되는 함수 constructor(name, emoji) { this.name = name; this.emoji = emoji; } // 클래스 레벨의 메서드 static makeRandomFruit() { // 클래스 레벨의 메서드에서는 this를 참조할 수 없음 // 주어진 데이터가 없는 템플릿 자체이므로 this를 참조할 수 없다. return new Fruit('banana', '🍌'); } // 인스턴스 레벨의 메서드 display = () => { console.lo..

    [JavaScript_study] 클래스(class)

    * 자바스크립트 내부구현사항은 프로토타입을 이용해서 생성자 함수를 지원한다. * 객체지향은 대부분 class를 이용해서 객체들을 만들어간다. * 결론적으로 클래스(Class란?) > 객체를 생성할 수 있는 템플릿 (청사진, 틀) > Class를 이용해 객체지향프로그래밍을 할 수 있다.(Object-Oriented-Programming > 프로토타입보다 간편함 > 클래스를 이용해 만들어진 객체를 인스턴스(Instance)라고 한다. // 객체를 손쉽게 만들수 있는 템플릿 // 1. 생성자 함수 (오래된 고전적인 방법) // 2. 클래스 ✨ // 클래스 class class Fruit { // 생성자: new 키워드로 객체를 생성할때 호출되는 함수 constructor(name, emoji) { this.n..

    [JavaScript_study] 객체란?

    * 객체 (Object)란? > 서로 연관있는 속성과 행동을 묶어 준다. > 속성 : 데이터(프로퍼티//Property) > 행동 : 함수(메서드//method) > 객체란 순수 데이터 객체도 있고 상태와 행동 객체도 있다. > 밀접하게 관련 있는 상태와 행동을 객체로 묶어야 한다. // Object literal { key: value } // new Object() // Object.create(); // key - 문자, 숫자, 문자열, 심볼 // value - 원시값, 객체 (함수) // 특수한 경우가 아니라면 깔끔하게 문자로 만드는것이 제일 좋다. let apple = { name: 'apple', 'hello-bye': '✋', 0: 1, ['hello-bye1']: '✋', }; // 속성,..

    [JavaScript_study] 함수(function)에 대해서

    * 함수(Function) > 특정한 일을 수행하는 코드의 집합 > 프로그램에서 중복되는 일이 있다면 함수단위로 작은단위의 일들을 묶어야한다. > 수행하는 일을 잘 나타낼 수 있는 이름을 지어야한다. > 매개변수 이름도 의미있게 지어야 한다. > 함수도 결국은 객체(Object)이기 때문에 함수를 정의하면 함수의 Object가 Heap라는 공간에 정의된다. > 정보가 가득 담겨야 하므로 메모리 셀이 여러개가 필요하다. > 따라서 함수의 이름은 결국 함수 Object가 담긴 메모리 주소를 가르킨다. > 함수의 이름은 함수를 참조하고 있다. (Copy by reference) // 사용예제 1 function sum(a, b) { console.log('function'); return a + b; } co..

    [JavaScript_study] 반복문(for, while)

    * 반복문 Loop Statement (for) // for(변수선언문; 조건식; 증감식) { } // 실행순서: // 1. 변수선언문 // 2. 조건식의 값이 참이면 { } 코드블럭을 수행 // 3. 증감식을 수행 // 4. 조건식이 거짓이 될때까지 2번과 3번을 반복함 for (let i = 0; i < 5; i++) { console.log(i); } for (let i = 0; i < 5; i = i + 2) { console.log(i); } for (let i = 0; i < 5; i++) { for (let j = 0; j < 5; j++) { console.log(i, j); } } // 무한루프 ;; // for (;;) { // } // 반복문 제어: continue, break; fo..