
hasOwnproperty, forin, forof, forEach 정리

객체에 접근하는 방법으로 점 표기법과 대괄호 표기법이 있는데 속성에 접근할 때 헷갈려서 정리했다.
- getComputedStyle - 함수 옵션

forEach => 배열 순환 반복을 돌릴 뿐 값을 반환하진 않는다.reduce => 배열 순환 반복을 돌리고 값을 반환한다. 숫자/문자/배열/객체 반환map => 배열 순환 반복을 돌리고 값을 반환한다. only 배열만 반환filter =>

일반 함수 vs 재귀 함수 각자 어떨 때 쓰이는가? (with. this) 재귀 함수(feat. factorial)
in 문제점 : 없는 거라도 있다고 나오고 한 번에 하나만 조회할 수 있다.객체의 키/배열만 모아서 배열을 반환하는 메서드 Object.keys / Object.values정적 메서드 - 그냥 쓸 수 있음오브젝트 메서드 - call 써야됨remove 는 남겨두는 거

call : this를 전달 + 인수를 개별로 받는다. 함수 바로 실행apply : this를 전달 + 인수를 배열로 받는다. 함수 바로 실행bind : call처럼 전달 + 함수 나중에 실행 (const a = ().bind())프로토타입 이해할 때 썼던 gpt생성

꼭 constructor 가 있어야 한다! \-> 딱 한번만 실행되고 꼭 함수 이름이 consturctor 여야한다.class Tiger extends Animal{} = Animal.call(this)

클로저 : 함수는 본인이 생성될 때의 스코프(환경)을 기억한다. return 되며 외부 함수의 실행 컨텍스트가 끝나더라도 내부 함수는 외부 함수의 스코프를 기억하고 있기 때문에 외부 함수의 스코프(변수,상태)는 가비지 컬렉션의 대상이 되지 않고 계속 메모리에 남아있다.
sync(동기) async(비동기) webJS는 싱글스레드 동기식인데 멀티스레드로 하려고 web api 가 제공해준다.근데 시간을 보장해줄 수 없다. 싱글스레드라서 피보나치 같은 게 계속 돌고있으면 콜백 큐에 가만히 들어있다. -> callback, async awai
'이게왜돼'.toLowerCase() 원시값으로도 메서드를 쓸 수 있는 이유가 뭘까!=> '' 같이 원시값이 꼭 객체처럼 사용할 수 있게 되어 있다. '원시값을 다룰 일이 많은데 이 자체로 메서드를 사용하면 편리할 것 같다 + 근데 원시값을 최대한 가벼워야 하는데.'

스택 : 후입선출(LIFO) 콜 스택큐 : 선입선출(FIFO) 콜백 큐
제네레이터 -> 이터러블한 객체로 만들어주는 거. 일관된 반복 동작을 제공한다. 커스텀 반복 제어가 가능하다. (객체를 반복 가능한 상태로 만들어서)지연 계산이 가능하다.(필요할 때마다 반복을 돌림)무한 시퀀스 생성 (무한대 값 생성)비동기 반복 작업다양한 데이터 소스
동기적인 게 베이스 -> 필요할 때 비동기를 쓰는 것. (전체 화면이 안 움직이고 안에 있는 일부 화면만 바뀐다던가 하는 거.) 통신할 때 문자로 한다!서버한테 보낼 때 JSON.stringify(body)서버한테 받아올 때 JSON.pars(response)서버랑 통
순차적인 작업을 하고 싶다!\-> 딜레이 함수를 쓴다. \-> 작업이 많고 복잡하다.\-> 딜레이 함수로 콜백 지옥이 시작된다. ( ! 가독성 안 좋음 )\-> 딜레이 함수에 setTimeout 은 순서보장이 안 된다. ( ! 순서 보장 안 됨 )==> 프로미스를 쓰자
for in - enumerable - key | for of - iterable - item
call, apply, bind 는 다른 함수를 내 객체의 메서드인 것처럼 사용할 수 있도록 this 를 변경하는데 쓰인느 함수 메서드이다.
웹 스토리지Session Storage Local Storage
디바운싱, 쓰로틀링
localStorage로 최근 검색어 만들기
커링에 대해서 알아보자.