객체 리터럴은 JavaScript의 기본 부분으로, 객체를 빠르게 생성하고 초기화할 수 있게 해줍니다. ES6 이상에서 JavaScript는 객체 리터럴에 몇 가지 향상된 기능을 도입하여 더욱 강력하고 간결하게 만들었습니다. 이러한 개선 사항에 대해 자세히 알아보고 코드를 더욱 깔끔하고 효율적으로 만드는 방법을 살펴보겠습니다.
객체를 생성할 때 속성 이름이 객체에 할당하는 변수 이름과 동일한 경우 약식 구문을 사용할 수 있습니다.
const name = 'John'; const age = 30; // Old way const person = { name: name, age: age }; // New way const person = { name, age }; console.log(person); // { name: 'John', age: 30 }
이 단축 구문은 반복을 줄이고 코드를 더욱 간결하게 만듭니다.
MDN 문서: 객체 이니셜라이저
마찬가지로 객체에서 메소드를 정의할 때 함수 키워드와 콜론을 생략할 수 있습니다.
// Old way const calculator = { add: function(a, b) { return a b; } }; // New way const calculator = { add(a, b) { return a b; } }; console.log(calculator.add(5, 3)); // 8
이 구문은 특히 개체에 여러 메서드가 있는 경우 더 깔끔하고 읽기 쉽습니다.
MDN 문서: 메소드 정의
ES6에서는 표현식을 사용하여 속성 이름을 계산할 수 있습니다. 이는 동적 속성 이름을 만들 때 특히 유용합니다.
const prefix = 'user_'; const id = 1234; const user = { [`${prefix}${id}`]: 'John Doe' }; console.log(user.user_1234); // 'John Doe'
이 기능은 일부 로직이나 외부 데이터를 기반으로 동적 키를 사용하여 개체를 생성해야 할 때 강력합니다.
MDN 문서: 계산된 속성 이름
ES6에서는 get 및 set 키워드를 사용하여 객체 리터럴에서 메서드를 정의하는 새로운 방법을 도입했습니다. 이를 통해 함수를 명시적으로 호출하지 않고도 계산된 속성을 생성할 수 있습니다.
const person = { firstName: 'John', lastName: 'Doe', get fullName() { return `${this.firstName} ${this.lastName}`; }, set fullName(name) { [this.firstName, this.lastName] = name.split(' '); } }; console.log(person.fullName); // 'John Doe' person.fullName = 'Jane Smith'; console.log(person.firstName); // 'Jane' console.log(person.lastName); // 'Smith'
Getter 및 Setter는 계산된 속성을 정의하는 깔끔한 방법을 제공하며 값을 가져오거나 설정할 때 유효성 검사 또는 부작용을 추가하는 데 사용할 수 있습니다.
MDN 문서: Getter 및 Setter
객체 리터럴 향상의 일부는 아니지만 확산 연산자(...)는 객체 리터럴과 잘 작동하는 강력한 기능입니다. 이를 통해 쉽게 개체를 복제하거나 여러 개체를 병합할 수 있습니다.
const defaults = { theme: 'light', fontSize: 14 }; const userPreferences = { fontSize: 16 }; const settings = { ...defaults, ...userPreferences }; console.log(settings); // { theme: 'light', fontSize: 16 }
확산 연산자를 사용하면 기존 개체를 기반으로 새 개체를 쉽게 만들 수 있으며, 이는 애플리케이션에서 불변성을 유지하는 데 특히 유용합니다.
MDN 문서: 확산 구문 (...)
JavaScript의 이러한 개체 리터럴 향상은 개발자에게 개체 작업을 위한 보다 표현적이고 간결한 방법을 제공합니다. 이러한 기능을 활용하면 유지 관리가 더 쉽고 깔끔하고 읽기 쉬운 코드를 작성할 수 있습니다.
이러한 기능은 강력하지만 현명하게 사용하는 것이 중요하다는 점을 기억하세요. 항상 간결함보다 코드 가독성과 유지관리성을 우선시하세요.
다음은 이러한 기능에 대한 브라우저 지원에 대한 간략한 개요입니다.
특징 | 크롬 | 파이어폭스 | 원정 여행 | 가장자리 |
---|---|---|---|---|
약속 속성 | 43 | 33 | 9 | 12 |
속기 방법 | 43 | 34 | 9 | 12 |
계산된 속성 이름 | 43 | 34 | 8 | 12 |
Getter/Setter 메서드 | 1 | 1.5 | 3 | 12 |
객체 확산 | 60 | 55 | 11.1 | 79 |
이러한 개선 사항은 일반적으로 성능에 큰 영향을 미치지 않지만, 객체 확산 연산자는 많은 속성을 병합하는 데 Object.sign()보다 효율성이 떨어질 수 있습니다. 대부분의 사용 사례에서 가독성 이점은 사소한 성능 차이보다 중요합니다.
최신 JavaScript 개체 조작에 대한 이해를 더욱 높이려면 다음을 살펴보세요.
이러한 객체 리터럴 개선 사항과 관련 기능을 숙지하면 더욱 우아하고 효율적인 JavaScript 코드를 작성할 수 있는 준비를 갖추게 됩니다.
이 기사가 도움이 되었다면 팔로우 버튼을 클릭하여 JavaScript, Reactjs 및 Next.js에 대한 추가 업데이트와 유용한 리소스를 받으세요. 또한 Twitter @OgDev-01에서 저를 팔로우하여 유용한 리소스와 기술 동향을 얻거나 OpenSauced에서 제가 어떤 기여를 했는지, 제가 강조한 부분을 확인할 수도 있습니다!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3