[JavaScript] ๊ฐ์ฒด

Hannahhhยท2022๋…„ 7์›” 8์ผ
0

JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
12/47

๐Ÿ” ๊ฐ์ฒด

ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์•ˆ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์ ธ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ex) ์ฃผ์†Œ๋ก

๊ฐ์ฒด ์„ ์–ธ ํ›„, ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ Dot notation, Bracket notation 2๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ, key ๊ฐ’์ด ๋™์ ์œผ๋กœ ๋ณ€ํ•  ๋•Œ ์ฆ‰, ๋ณ€์ˆ˜์ผ๋•Œ ๋ฐ˜๋“œ์‹œ braket notation์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

//๊ฐ์ฒด ์„ ์–ธ
let user = {
    firtName: 'Steve',
    lastName: 'Lee',
    email: 'steve@codestates.com',
    city: 'seoul'
};

//๊ฐ์ฒด ๊ฐ’ ์‚ฌ์šฉ - ๋ฐฉ๋ฒ•1. Dot notation
user.firtName;   // 'steve'
user.city;       // 'Seoul'

//๊ฐ์ฒด ๊ฐ’ ์‚ฌ์šฉ - ๋ฐฉ๋ฒ•2. Bracket notation
user['firstName'];  // 'steve'
user['city'];       // 'Seoul'


// example
let tweet = {
    writer: 'stevelee',
    createAt: '2019-09-10 12:03:33',
    content: 'ํ”„๋ฆฌ์ฝ”์Šค ์žฌ๋ฐŒ์–ด์š”!'
};

// 'ํ”„๋ฆฌ์ฝ”์Šค ์žฌ๋ฐŒ์–ด์š”!'๋ฅผ bracket notation์œผ๋กœ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์€?(์ŠคํŠธ๋ง์œผ๋กœ ๊ฐ€์ ธ์˜ด)
tweet['content'];    // O, ' ' ํ™‘ ๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ
tweet["content"];    // O, " "  ์Œ ๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ
tweet[`content`];    // O, `  ` ๋ฐฑํ‹ฑ ์‚ฌ์šฉ

tweet[content];      // ReferenceError, ์—ฌ๊ธฐ์— content๋Š” ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰๋œ๋‹ค.
//์œ„์˜ ๋ฐฉ๋ฒ•์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ด ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” let content = โ€˜contentโ€™ ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ content๋ผ๋Š” ๋ณ€์ˆ˜์— โ€˜contentโ€™๋ผ๋Š” ๋ฌธ์ž์—ด์ด ํ• ๋‹น๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.



โœ” Bracktet donation์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ์˜ˆ์‹œ

parameter๋กœ ๊ฐ์ฒด์™€ ํ‚ค๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๊ณ , ์ด ํ•จ์ˆ˜๋Š” ์ฃผ์–ด์ง„ ๊ฐ์ฒด์™€ ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์†์„ฑ๊ฐ’์„ ์ฐพ์•„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

function getProperty(obj, propertyName){
  return obj[propertyName];   // bracket donation
}

let person = {
  name: 'Steve',
  age: 16
};

// ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋Š˜ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— bracket์œผ๋กœ ๋ฆฌํ„ดํ•ด์•ผํ•จ
let output = getProperty(person, 'name');
console.log(output);     // 'Steve'

let output2 = getProperty(person, 'age');
console.log(output2);     // 16



โœ” dot/bracket notation์„ ์ด์šฉํ•ด ๊ฐ’ ์ถ”๊ฐ€, ์‚ญ์ œ

let tweet = {
    writer: 'stevelee',
    createAt: '2019-09-10 12:03:33',
    content: 'ํ”„๋ฆฌ์ฝ”์Šค ์žฌ๋ฐŒ์–ด์š”!'
};

// ๊ฐ’ ์ถ”๊ฐ€
tweet['category'] = '์žก๋‹ด';
tweet.isPublic = true;
tweet.tags = ['#์ฝ”๋“œ์Šคํ…Œ์ด์ธ ', '#ํ”„๋ฆฌ์ฝ”์Šค'];

//๊ฐ’ ์‚ญ์ œ(delete ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ)
delete tweet.createdAt;

//tweet์€ ๋‹ค์Œ๊ณผ ๊ฐ™๊ฒŒ ๋œ๋‹ค.
/* {writer: 'stevelee', 
content: 'ํ”„๋ฆฌ์ฝ”์Šค ์žฌ๋ฐŒ์–ด์š”!', 
category: '์žก๋‹ด', 
isPublic: true, 
tags: Array(2)} */



โœ” in ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด ํ‚ค ์œ ๋ฌด ํ™•์ธ

let tweet = {
    writer: 'stevelee',
    createAt: '2019-09-10 12:03:33',
    content: 'ํ”„๋ฆฌ์ฝ”์Šค ์žฌ๋ฐŒ์–ด์š”!'
};

'content' in tweet;    // true
'updateAt' in tweet;   // false,  updatedAt๊ฐ€ ์žˆ์Œ.

โœ” ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ ์ฐธ์กฐ

let user = {
    FirstName: 'Steve',
    LastName: 'Lee',
    email: 'steve@codestates.com',
    city: 'seoul',
  
  name: function() {
    return this.FirstName + this.LastName;
  }
};

user.name(); // 'SteveLee'

user.name;  // ฦ’ () { return this.FirstName + this.LastName;}

Reference:

๋งํฌํ…์ŠคํŠธ


โœ” Q. ๋‘ ๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋‘ ๋ฒˆ์งธ ๊ฐ์ฒด์˜ ์†์„ฑ๋“ค์„ ์ฒซ ๋ฒˆ์งธ ๊ฐ์ฒด์— ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜ ๊ตฌํ˜„

function extend(obj1, obj2) {
   for (let key in obj2) {
    if (!(key in obj1)) { //obj1์•ˆ์— obj2์˜ key๊ฐ€ ์žˆ๋‹ค๋ฉด?  obj1๊ณผ obj2์˜ ์ค‘๋ณตkey ์ œ๊ฑฐ
      obj1[key] = obj2[key]; // obj1 ๊ฐ์ฒด ์•ˆ์— obj2์˜ key์™€ ๊ฐ’์„ ์ถ”๊ฐ€
    }
  }
}
//key -> ๋Œ€๊ด„ํ˜ธ ์—†์ด ์“ฐ๋ฉด key 
//[key] -> ๋Œ€๊ด„ํ˜ธ ํฌํ•จํ•˜๋ฉด ๊ฐ’



Reference: ์ฝ”๋“œ์Šคํ…Œ์ด์ธ 

0๊ฐœ์˜ ๋Œ“๊ธ€