prototype function 공격(스킬, 스킬2) { this.q = 스킬1; this.w = 스킬2; } const 캐릭터1 = new 공격("strike", "snowball"); 공격이라는 객체의 prototype을 콘솔창에 입력하면 위와 같이 검색된다. prototype은 유전자 역할을 한다고 생각하면 됨 공격.prototype.name = "kim"; 공격의 prototype에 name을 추가하면 공격(부모)이라는 객체로부터 만들어진 캐릭터1(자식)도 name을 사용할 수 있다. 캐릭터1에 name을 지정한 적이 없지만 부모의 유전자이므로 상속받아서 가져다 쓸 수 있는 것! const arr = [4, 2, 1]; arr.sort( ); // 1, 2, 4 arr라는 배열에 요소들을 오름..
var 학생1 = { name : 'Kim', age : 15 }; var 학생2 = { name : 'Park', age : 15 }; ... 반복되는 object를 계속 만드는 것은 너무 비효율적! constructor(생성자) 사용해서 오브젝트를 복사할 수 있다 //var 학생1 = { name : 'Kim', age : 15 }; function 기계(){ this.name = 'Kim'; this.age = 15; } constructor(생성자)를 오브젝트 복사 기계라고 생각하면 된다. function이라는 함수 키워드를 사용하면 되고 그 안에 this.name과 this.age를 넣으면 오브젝트 복사 기계가 완성 된다. this는 새로 생성되는 오브젝트를 뜻한다(멋진 개발자 용어로 인스턴스라..
const callback = []; for (var i = 0; i 5); } callback.forEach((cb) => console.log(cb())); // 출력: 5 5 5 5 5 5 const callback = []; for (let i = 0; i i); } callback.forEach((cb) => console.log(cb())); // 출력: 0 1 2 3 4 5 위 두 코드의 차이점은 for문 안의 var, let 이다. var를 쓰면 5만 5번 출력되고 let을 쓰면 0부터 5까지 출력된다 (왜지) 위 코드들에서 배열에 push로 화살표 함수를 넣는 것부터 이해가 안됐다. 반복문써서 배열에 push할땐 callback.push(2) 이렇게 숫자만 직접적으로 넣어봤기때무네... ..
sort( ) - 배열 정렬(내림차순, 오름차순) console.log([1,6,5,33,7,111].sort((a,b)=>a-b)) // 오름차순 [ 1, 5, 6, 7, 33, 111 ] console.log([1,6,5,33,7,111].sort((a,b)=>b-a)) // 내림차순 [ 111, 33, 7, 6, 5, 1 ] indexOf( ) - 배열에서 특정 요소를 찾아 인덱스 반환, 특정 요소 존재하지 않으면 -1 반환 * 배열안에서 요소의 순위 구할 때 사용 (프로그래머스 코테 입문 중 진료순서구하기 문제) const beasts = ['ant', 'bison', 'camel', 'duck', 'bison']; console.log(beasts.indexOf('bison')); // 1 (첫..
파이썬 같은 언어는 순서대로 코드를 실행해 주지만 but 자바스크립트는 순서대로 코드 실행하지 않는다. ex) console.log(1+1) setTimeout(function(){ console.log(2+2) },1000) console.log(3+3) 위의 코드를 실행시키면 1+1 → 3+3 → 2+2 순으로 코드가 실행된다. 원래 순서대로면 1+1 → (1초 후) 2+2 → 3+3 실행되어야 하지않나 코드 위에 적든 밑에 적든 빠른 것부터 실행이 되는 것이다. 웹 브라우저 동작 원리 웹 브라우저 : 자바스크립트 실행시켜 주는 엔진 웹 브라우저 내부에 Stack이라는 공간이 있고 거기서 코드를 하나하나 실행시켜 준다 (코드를 실행해 주는 곳) Stack은 하나밖에 없어서 한 번에 코드 한 줄만 실행..
filter( ) filter( ) 메서드는 조건에 맞는 요소를 모아 새로운 배열을 만들어줌 ex) 주어진 배열에서 짝수와 홀수를 새로운 배열에 각각 담으려면? function solution(arr){ const 짝수 = arr.filter( e => e%2==0 ); const 홀수 = arr.filter( e => e%2!=0 ); return [짝수,홀수] } console.log(solution2([1,2,3,4,5,6])) //[ [ 2, 4, 6 ], [ 1, 3, 5 ] ] filter 안의 조건의 맞으면 새로운 배열을 생성해줌
리액트를 공부하다가 자바스크립트 지식이 정말 중요하다는 것을 알게 되었다. 리액트의 useState를 자바스크립트에서는 어떻게 만들었는지 기억이 안나서 클론코딩을 하며 자바스크립트 문법들을 다시 복습해 보았다. 만들면서 이해되지 않은 부분 time>0라는 조건문이 참이면 time에서 1씩 감소되고, 거짓이면 1초마다 실행되는 카운트다운 함수를 멈추게하는 삼항 연산자였는데 거짓부분에 그냥 바로 clearInterval(interval) (*카운트다운 함수를 즉시 종료시켜줌)을 넣어버리는게 낫지 않나 생각했었다. 왜 굳이 isPlaying이란 변수를 만들어서 false, true 값을 주고 !isPlaying라는 조건문을 또 만들어서 clearInterval(interval)을 실행시키게 하는지 이해가 안되..