# object.freeze

8개의 포스트

[javascript] 객체 다루기

Shorthand property 자바스크립트 객체 프로퍼티, 메서드를 축약해 사용 가능하다. 키-값의 형태가 같은 경우 firstname: firstname 으로 쓸 필요없이 firstname으로 충분하다. Computed property name 값 뿐 아니라 객체의 키 또한 동적으로 받을 수 있다. React에서 익숙하게 사용하는 useState 또한 이에 해당한다. Key-value data 강의에서는 lookup table이라는 제목이었지만, 결국 키-값 쌍 형태로 나열된 데이터에대한 이야기이기 때문에 key-value data로 바꿔서 기록한다. 키-값 형태의 데이터를 computed property name과 함께 사용하면 효율적으로 코드를 짤 수 있다. > ### 1. if-else if문 형태 -> 리팩토링 2. switch문 type에 따라 데이터를 리턴하고, 없는 case의 경우 '해당없음'을 리턴한다. if-else i

2023년 6월 29일
·
0개의 댓글
·

면접 스터디 - 6일차

require와 import차이점을 설명해주세요. 각각 어떤 상황에서 쓸 수 있나요? 답변일자: 2023.04.03. require는 commonJS A.K.A. CJS로 es6이전 혹은 node.js에서 모듈을 가져올 때 사용하는 문법입니다. import는 ES module A.K.A. ESM으로 es6 문법을 지원하고 주로 브라우저에서 많이 활용합니다. 문법적으로 비교를 해볼 수 있습니다. 일단 ESM이 더 간결합니다. 각각 상황은 브라우저와 서버 런타임에 따라 다릅니다. 런타임마다 각각 필요한 것이 다릅니다. 먼저 CommonJS는 동기적으로 동작합니다. 모든 모듈을 불러오는 작업을 해야 합니다. 또 Node.js는 실질적으로 싱글쓰레드이기 때문에 다른 작업을 못합니다. 동기적으로 모든 파일을 가져오는 방식으로 동작합니다. 여기서 파악할 수 있는 것은 서버를 처음 작동시킬 때는 느리더라고 계속 동작하고 있으면 크게 상관없습니다. ESM은 CJS와 다릅니다

2023년 4월 3일
·
0개의 댓글
·
post-thumbnail

Object, Array 메서드의 depth가 대부분 1인 이유(뇌피셜)

리팩터링 리팩터링(소프트 코딩)을 하던 도중 아래와 같이 Constant를 immutable화 함으로써 안정성을 확보하였다. 객체에 왜 저렇게 난도질을..? ??? : 저기요 선생님. 코드는 이렇게 깔끔해야 좋습니다. 하나(은행 아님)는 알고 둘은 모르는 소리이다. 위처럼 객체가 중첩된 상태에서 Object.freeze()를 사용하면 depth가 1인 값(데이터 영역)들에 대해서만 불변성이 확정되며 depth가 2이상의 참조값은 값이 여전히 가변적이다. 따라서 각 Layer별로 object를 freeze하고 상위 객체에서 이를 참조한 뒤, 다시 freeze를 하는 방식으로 구현한 것이다. 문제는 nested Object의 depth가 깊어질수록 위의 과정이 복잡해져 이를 해결하는 재귀함수를 작성해야 한다는 의미이다. 궁금증 발생 왜 Object.freeze()는 depth가 1까지만 적용될까? 문득 생각해보

2023년 2월 2일
·
0개의 댓글
·
post-thumbnail

Object.freeze()와 Object.seal()은 무엇인가?

refrence : https://ui.toast.com/posts/ko_20220420 우테코 프리코스를 하며 사람들의 코드를 둘러보며 리뷰하더 도중 이러한 코드를 발견할 수 있었다. 서론 그래서 상수처리하는데 왜 저게 필요한 것이지? 라는 생각과 왜 저런 코드를 작성할까를 궁금해서 탐색을 하게 되었다. 먼저 Object.freeze() 란 무엇인가에 대해 알아보았는데 > The Object.freeze()method freezes an object. Freezing an object prevents extensions  and makes existing properties non

2022년 11월 22일
·
0개의 댓글
·

[2주차] 불변 객체를 만드는 방법

불변 객체(immutable)란? '변하지 않는 객체' 객체 생성 이후에는 객체의 상태가 바뀌지 않는 객체를 말한다. [장점] : 이해하기 쉽고 안정적인 서비스 개발에 도움이 된다. : map, set, cache에 쓰기에 적절하다. : thread-safe(멀티 스레드 프로그래밍) 하다? : 불변 객체를 필드로 쓰면 방어적 복사를 할 필요가 없다. > 불변객체를 만드는 방법으로 const와 Object.freeze()메소드를 사용하여 만들 수 있다. const키워드는 변수를 상수로 선언할 수 있다. 일반적으로 상수로 선언된 변수는 값을 바꿀 수가 없다. const 키워드로 선언된 animal변수에는 객체의 재할당은 불가능하지만 객체의 속성은 변경이 가능하다. > Object.freeze() 객체를 동결하기 위한 메소드다. 객체는 객체의 속성을 변경하는 시도는 불가능하다. 동결된 객체를 반환해주지만 객체의 재할당은 가능하다. > Object.

2022년 11월 18일
·
0개의 댓글
·
post-thumbnail

[220815] 오늘의 배움(TIL) - JavaScript

🔶 JavaScript >- 내부 슬롯과 내부 메서드란 무엇인가? > : 프로퍼티 어트리뷰트를 이해하기 위한 선행적 개념 : 자바스크립트 엔진의 구현 알고리즘을 설명하기 위한 가상의 프로퍼티와 가상의 메서드 : ECMAScript 사양에 등장하는 [[ ]]로 감싼 이름들이 내부 슬롯과 내부 메서드에 해당함 >- 내부 슬롯과 내부 메서드에 어떻게 접근할 수 있는가? > : 자바스크립트 엔진 내부에서 실제 동작하지만, 외부로 공개된 객체의 프로퍼티가 아니므로 원칙적으로 접근 불가능 : 그러나 일부 내부 슬롯, 내부 메서드는 간접적으로 접근할 수 있는 수단 제공 ex) 모든 객체가 가지는 내부 슬롯 [[Prototype]]은 접근자 프로퍼티인 proto를 통해 접근 가능 >- 프로퍼티 어트리뷰트란 무엇인가? > : 자바스크립트 엔진이 프로퍼티를 생성할 때 기본 값으로 정의하는 프로퍼티의 상태를 의미함 : 쉽게 말

2022년 8월 15일
·
0개의 댓글
·
post-thumbnail

[JS] 배열내장함수

[배열내장함수] 배열내장함수를 사용하면 위 코드를 한 줄로 줄일 수 있다. 내장함수는 객체의 메서드와 같다. 자바스크립트의 자료형은 모두 객체로 이루어져 있다. forEach() 내장함수는 배열의 모든 요소를 한 번씩 순회할 수 있도록 해주는 메서드이다. 배열 각각의 요소를 forEach() 내부의 콜백함수에 전달된 파라미터를 한 번씩 순회한다. 쉽게 말해 콜백 함수를 한 요소별로 한번 씩 실행한다. 순회하여 값은 2배로 만들 수 있지만 2배한 값을 배열로 만들진 않는다. 더 짧게 쓴다면, map()을 사용하면 된다. map()은 내부의 콜백함수에 return을 사용할 수 있다. map() 또한 forEach() 처럼 콜백함수를 순회하지만 return이 있어서 각각의 값을 반환한다. map()은 메모리를 할당하고 리턴 값을 저장, 새로운 array 반환 forEach()는 리턴 값 X, undefined 반환. 현재 array 반

2022년 5월 14일
·
0개의 댓글
·
post-thumbnail

[클린코드 JS] 객체 변경 방지 메서드

객체 변경 방지 메서드 객체 변경 방지 메서드 객체 확장 금지 : Object.preventExtensions(), 확장이 금지된 객체는 프로퍼티 추가가 금지된다. 객체 밀봉 : Object.seal(), 밀봉된 객체는 읽기와 쓰기만 가능하다 객체 동결 : Object.freeze(), 동결된 객체는 읽기만 가능하다. 객체가 잘 동결되었는지 확인하려면, Object.isFrozen()메서드를 사용하여 반환된 불린값을 확인할 수 있다. 그런데 Object.freeze()도 2 depth 이상의 중첩된 영역에 대해서는 동결하지 못한다(참조값에서 일반적인 복사 방법으로는 얕은 복사밖에 되지 않는 원리와 같다) 따라서 2 depth 이상의 중첩된 영역에 대해서도 동결하려면, 중첩된 freezing을 해야 한다. 대중적인 유틸 라이브러리(lodash)을 사용하거나 직접 유틸 함수 생성하여

2021년 12월 14일
·
0개의 댓글
·