HTML의 모든 요소들은 흔히 알고있는 content, padding, border, margin의 형태를 띄고 있는 Box의 형태를 로 표현될 수 있는데 이 때 Box의 형태를 정의하는 CSS 모듈
웹 페이지를 서버에서 받으면 HTML, CSS 파일은 각각의 parser에 의해 파싱되는데 이 때 만들어진 DOM, CSSOM 트리로 변환되고 렌더 트리로 결합되는 과정에서 HTML요소들이 박스 형태로 표현된다.
임의의 엘리먼트에 width: 100px
스타일을 준 경우 content-box는 박스 모델의 요소 중 content의 width를 100px로 하지만 border-box에 경우 content + padding + border + margin을 포함한 width를 100px로 나타낸다. 정리하자면 content-box는 style 부여 기준을 content 영역으로, border-box는 4가지 요소를 합친 영역으로 정한 방식이다.
일반 생성자 함수는 prototype 프로퍼티가 가리키는 prototype 객체의 constructor를 사용하는데 화살표 함수는 prototype 프로퍼티를 갖고 있지 않기 때문에 사용할 수 없다.
const Test = () => {};
console.log(Test.hasOwnProperty('prototype'));
const t = new Test()
이벤트 핸들링 패턴으로 각 요소마다 이벤트 핸들러를 할당하지 않고 단 하나의 이벤트 핸들러를 이용하여 여러 요소를 다루기 위해 사용한다.
자바스크립트 엔진이 코드를 실행할 때 실행에 필요한 정보(변수, 함수 등)들을 형상화하고 구분하는 것과 해당 코드와 나머지 코드들 사이의 문맥을 계속해서 파악해나가는 것을 얘기한다.
immutable object은 변경 불가능한 객체
let str = 'test';
str = 'success'
// 위 경우 test 문자열이 변경되는 것이 아닌 test, success가 각각 메모리(데이터 영역)에 할당된다.
mutable은 변경 가능한 값
let user1 = {
name: 'Lee coding',
age : 20
}
let user2 = user1; // head에 있는 주소를 공유한 것!
user2 = user1;
user2.name = 'Kim coding';
console.log(user1.name); // 'Kim coding'
console.log(user2.name); // 'Kim coding'
HTTP는 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. 통신규약! (80번 포트 사용)
하지만 HTTP는 암호화되지 않은 평문 데이터를 전송하는 프로토콜이므로 보안에 취약하다. 이러한 보안 문제를 해결하기 위해 HTTPS가 나왔다. HTTPS는 HTTP에 암호화가 추가된 프로토콜이다. (433번 포트 사용)
innerHTML을 사용했을 경우 크로스 사이트 스크립팅(XSS공격) 노출되기 쉽다. 따라서 innerHTML은 사용하지 않는 것을 권장한다. innerHTML 대신 textContent를 사용하는게 좋다.
Model, View, Controller를 합친 용어로 비지니스 로직과 사용자 인터페이스 요소들을 분리시켜 개발하는 방식을 말한다. View는 사용자에게 보여주는 역할이고, Controller는 사용자에게 action을 받아 model이 어떻게 처리할지 알려주는 역할, model은 요청에 따라 데이터를 직접 처리하는 역할로 나눠 개발을 함에 있어 좀 더 수월하게 해주는 패턴이다.