ํฐ์คํ ๋ฆฌ ๋ทฐ
3 enhanced object literals
๋๋์ด๋ฐ๐พ 2018. 12. 13. 16:22์ด๋ฒ์ ๋ค๋ค๋ณผ ์ฃผ์ ๋ ๋ฒ์ญํด๋ณด๋ฉด ํฅ์๋ ๊ฐ์ฒด ๋ฆฌํฐ๋ด(?) ์ด๋ ๊ฒ ๋ฒ์ญ ๋ ๋ฏ ํ๋ฐ, ๊ฐ๋จํ ๋งํ์๋ฉด ๊ฐ์ฒด๋ฅผ ๋ง๋๋๋ฐ์ ์์ด์ ์กฐ๊ธ ๋ ๊ฐ๋ ์ฑ ์ข๊ณ ์งง์ ํํ๋ก ๋ง๋ค ์ ์๊ฒ๋ ํด์ฃผ๋ ๊ฒ์ ๋๋ค.
ํํ javascript๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์ดํฐํ์ ์ข ๋ฅ๋ฅผ ์ ๊ฒฝ์ฐ์ง ์๋๋ฐ ์ฌ์ค ์ด๋ฌํ new ์ฐ์ฐ์๋ฅผ ํตํด์ ๋ฐ์ดํฐ ํ์ ์ ๋ถ์ฌํ๋ ๊ฒ์ผ๋ก ์์์ ํด์ผํ์ฃ ์ด๋ฐ ์์ผ๋ก์
1 2 3 4 5 6 | //์ซ์ var num = new Number(); //๋ฌธ์์ด var str = new String(); //๊ฐ์ฒด var obj = new Object(); | cs |
๊ทธ์น๋ง ๋ณดํต์ ์ด๋ ๊ฒ new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐ๋ก ๋ณ์์ ๊ฐ์ ๋ด๋๊ฒ ์ผ๋ฐ์ ์ ๋๋ค.
1 2 3 4 5 6 | //์ซ์ var num = 1 //๋ฌธ์์ด var str = "hello" //๊ฐ์ฒด var obj = {"key":"value"} | cs |
์ด๋ฐ ๋ฐฉ์์ ์ง์ํ๋ ๊ฒ์ ๋ฆฌํฐ๋ด ํ๊ธฐ๋ฒ์ ์ง์ํ๋ค๊ณ ํ๋๋ฐ ๋ฌผ๋ก ์ด๋ es6 ์ด์ ์๋ ์ง์๋๋ ํํ์ ๋๋ค. ์๋์์ ๋งํ ๊ฒ์ ๋ ํฅ์๋ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์ด๋ผ๊ณ ํ์์ฃ ?
๊ทธ๋ผ ์ด๋ค์์ผ๋ก ๋ฐ๊ผ๋์ง ์ฝ๋๋ก ์ง์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
(์ถ์ฒ : https://dev.to/sarah_chima/enhanced-object-literals-in-es6-a9d)
(https://poiemaweb.com/es6-enhanced-object-property)
[ํ๋กํผํฐ ์ถ์ฝ ํํ]
1 2 3 4 5 6 7 8 9 | //ES5 function getLaptop(make, model, year) { return { make: make, model: model, year: year } } getLaptop("Apple", "MacBook", "2015");// {make: "Apple", model: "MacBook", year: "2015"} | cs |
1 2 3 4 5 6 7 8 | //ES6 function getLaptop(make, model, year) { return { make, model, year } } getLaptop("Apple", "MacBook", "2015"); // {make: "Apple", model: "MacBook", year: "2015"} | cs |
์์ฒญ ํฐ ๋ณํ๋ ์๋์ง๋ง, ์ด๊ธฐํ ํ๋ ค๋ ๊ฐ์ฒด์ key์ ๋งค๊ฐ๋ณ์๊ฐ ๋์ผํ ์ด๋ฆ์ผ ์์ ํ ๋ฒ๋ง ์จ์ฃผ๋ฉด ๋ฉ๋๋ค.
[ ๋ฉ์๋ ์ถ์ฝ ํํ ]
1 2 3 4 5 6 7 8 9 | //ES5 function getLaptop(make, model, year) { return { sayModel : function() { return model; } } } getLaptop("Apple", "MacBook", "2015").sayModel(); //"MacBook" | cs |
1 2 3 4 5 6 7 8 9 | //ES6 function getLaptop(make, model, year) { return{ sayModel() { return model; } } } getLaptop("Apple", "MacBook", "2015").sayModel(); //"MacBook" | cs |
๋ ๋ค ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๊ณ ์๋๋ฐ ES5์์๋ key์ key value ๋ฅผ ์ผ์ผ์ด ์ ์ํด์ฃผ๊ณ ์๊ธฐ ๋๋ฌธ์ function ์ ์ธ์๋ฅผ ์ฐ๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง ES6์์๋ ๋ณด์๋ฉด ๊ธฐ์กด์ ์๊ณ ์๋ ๊ฐ์ฒด ํ๊ธฐ๋ฒ๊ณผ๋ ๋ฌ๋ฆฌ key ๋ค์ ๊ดํธ๋ฅผ ์ฐ๋ฉด์ ๋ฐ๋ก ํจ์๋ฅผ ํํํด๋ฒ๋ฆฌ์ฃ .
[ ํ๋กํผํฐ ํค ๋์ ์์ฑ ]
1 2 3 4 5 6 7 8 9 | // ES6 let i = 0; const obj = { [++i]: i, [++i]: i, [++i]: i }; console.log(obj); // {1: 1, 2: 2, 3: 3} |
ES5์์๋ ๊ฐ์ฒด์ ํ๋กํผํฐ ํค๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ณ ์ถ์ ๊ฒฝ์ฐ, ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์ธ๋ถ์์ ๋๊ดํธ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํด์ผ ํ๋๋ฐ, ES6์์๋ ๊ฐ์ฒด ๋ด๋ถ์์๋ ๋๊ดํธ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํด ํ๋กํผํฐ ํค๋ฅผ ๋์ ์ผ๋ก ์์ฑ ๊ฐ๋ฅํฉ๋๋ค.
[ __proto__ ํ๋กํผํฐ์ ์ํ ์์ ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // ES5 var parent = { name: 'parent', hello: function() { console.log('Hello! ' + this.name); } }; // ํ๋กํ ํ์
ํจํด ์์ var child = Object.create(parent); child.name = 'child'; parent.hello(); // Hello! parent child.hello(); // Hello! child |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // ES6 var parent = { name: 'parent', hello() { console.log("Hello! "+this.name) } }; // child ๊ฐ์ฒด์ ํ๋กํ ํ์
๊ฐ์ฒด์ parent ๊ฐ์ฒด๋ฅผ ๋ฐ์ธ๋ฉํ์ฌ ์์์ ๊ตฌํํ๋ค. const child = { __proto__: parent, name: 'child' }; parent.hello(); // Hello! parent child.hello(); // Hello! child | cs |
ES5์์๋ ๊ฐ์ฒด ์ธ๋ถ์์ Object.create๋ฅผ ํตํด ์์์ ๊ตฌํํ๊ณ ๋ด๋ถ์ ํ๋กํผํฐ ๋ํ ์ธ๋ถ์์ ๊ฐ์ ์ค์ ํด์คฌ๋๋ฐ, ES6์์๋ ์์๋ฐ๋ child ๊ฐ์ฒด ๋ด๋ถ์์ ์์๊ด๊ณ์ ๋ด๋ถ์ ํ๋กํผํฐ ๊ฐ ๋ํ ์ค์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
'javascript > ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
4. template strings (0) | 2018.12.24 |
---|---|
javascript๋ก ๋๋ง์๊ธฐ ๋ง๋ค๊ธฐ (0) | 2018.12.24 |
2.2 class์ ๊ธฐ๋ณธ ์ ์ธ (0) | 2018.12.05 |
2.1 classes ์ด์ prototype (0) | 2018.12.03 |
1.3 ํ์ดํ ํจ์์์์ arguments (0) | 2018.12.03 |
- Total
- Today
- Yesterday
- nestjs/cli
- nestjs project
- nestjs typeorm
- ๊ธฐ์์ฒญAPI
- sequelize
- Promise error
- ๋น๋๊ธฐ ์์ฒญ
- nestjs doc
- backend-framework
- foreignkey
- android
- Spring
- Request_Limit_Exceeded
- Spring Async
- node.js
- Promise bulk
- ์๊ณ ๋ฆฌ์ฆ
- NestJS
- node.js backend
- ํ๋ก๊ทธ๋๋จธ์ค
- typeorm
- nestjs configService
- @nestjs/config
- typeorm ์ฐ๊ฒฐ
- JavaScript
- nestjs module
- nestjs config
- nestjs directory
- docker mysql
- DeferredResult
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |