this
는 함수의 호출하는 방법에 따라 참조하는 객체가 달라질 수 있다.
이러한 특성 때문에 함수에서 this를 사용하는 부분에서 가장 큰 차이가 생길 수 있다.
특히, 객체 메서드로 호출되는 함수에서 this를 사용하는 경우와 생성된 객체로 호출되는 this가 참조하는 객체가 달라지므로 주의해서 사용해야된다.
자신이 속한 객체나 생성할 인스턴스를 가리키는 변수이다.
선언이 아닌호출 방법
에 따라 결정되기 때문에 특정 객체와 연결되어 this를 고정하는 과정을 바인딩이라고 한다.
window
(전역 객체)를 참조function sayHi() {
console.log(`Hi, my name is ${this.name}`);
}
const name = 'John';
sayHi(); // Hi, my name is undefined
this
와 다르다.const obj = {
name: "Jin",
sayHello() {
console.log(`Hello my name is ${this.name}`);
},
};
obj.sayHello(); // Hello my name is Jin
function Person(name) {
this.name = name;
}
const person = new Person("Jin");
console.log(person.name); // Jin
const person1 = { name: 'John' };
const person2 = { name: 'Mike' };
function sayHi() {
console.log(`Hi, my name is ${this.name}`);
}
sayHi.call(person1); // Hi, my name is John
sayHi.apply(person2); // Hi, my name is Mike
const sayHiPerson1 = sayHi.bind(person1);
sayHiPerson1(); // Hi, my name is John
로컬 스토리지와 세션 스토리지는
웹 스토리지
로 클라이언트 기반 키-벨류 저장소이고 서버로 전송되지 않으며 네트워크 트래픽 비용을 줄여준다.
로컬 스토리지
는 브라우저를 종료해도 데이터를 보관하며 도메인만 같으면 전역적으로 데이터가 공유된다. ex) 자동 로그인
이에 반면세션 스토리지
는 브라우저가 종료되면 데이터를 삭제하고 도메인이 같더라도 브라우저가 다르면 데이터를 공유하지 않는다. ex) 비로그인 장바구니, 아이디 자동완성
쿠키
는 웹 스토리지와 달리 서버와 클라이언트 간의 지속적인 데이터 교환으로 저장소로 모든 웹 요청과 쿠키정보를 포함하여 서버로 전송되며 개수와 용량 제한이 있다. 또한 만료일자를 지정하여 언젠간 제거가 된다는 차이점이 있다. ex) 다시보지않기 팝업창
데이터를 보관(영구성)
한다. 전역적으로 데이터가 공유
된다.데이터가 삭제(비영구성)
한다.브라우저 컨텍스트가 다르기 때문에 데이터 공유가 되지 않는다.
쿠키에 정보를 담아서 서버에 보내면 서버는 쿠키를 읽어서 요청자를 파악
한다. 쿠키의 목적
1. 세션 관리: 서버가 알아야될 정보 (로그인 및 사용자 정보, 접속시간)
2. 개인화: 사용자에 맞는 페이지 제공
3. 트래킹: 사용자 행동 및 패턴 분석