본문 바로가기

IT/JavaScript27

object groupby groupBy (objectArray, property) { return objectArray.reduce(function (acc, obj) { const key = obj[property] if (!acc[key]) { acc[key] = [] } acc[key].push(obj) return acc }, {}) } property에 이름을 넣어주면 기준으로 정렬이 된다. 2020. 7. 19.
호이스팅 js는 초기화가 아닌 선언만 끌어올린다. 만약 변수를 선언한 뒤 나중에 초기화시켜 사용해도 그 값은 undefined로 지정된다. 언제나 함수를 호출하기 전에 선언해놓아야한다. 2020. 7. 2.
객체지향적 프로그래밍 함수를 생성자로 사용하여 프로그래밍하는 것은 생성된 함수는 new로 호출되며 직접호출도 가능하게 되는데 new와 직접호출시에 this에 바인딩되는 객체가 달라지기에 생성자로 사용되는 함수는 대문자로 표기하며 사용을 추천하지 않는다. Function.prototpe.method = function(name, func) { if (!this.prototype[name]) { this.prototype[name] = func; } } 위의 함수를 이용하면 다음과 같이 사용할 수 있다. Person() 안에 setter나 getter를 사용하게 되면 new Person(); 사용시 여러개의 함수를 가지게 된다. prototype 사용시 함수객체를 여러개 생성할 필요 없이 프로토 타입 체인으로 접근한다. Func.. 2020. 7. 2.
클로저 이미 생명 주기가 끝난 외부 함수의 변수를 참조하는 함수를 의미한다. function outerFunc() { let x = 1; return function() { x++; console.log(x); } }; const newFunc = outerFunc(); newFunc(); 여기서 outerFunc() 에 있는 x와 같은 변수를 자유 변수라고 한다. 클로저를 사용하는 코드는 그렇지 않은 코드보다 메모리 부담이 크다. 2020. 6. 30.