๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ปStudy/JavaScript

๋ฐฐ์—ด

๋ฐฐ์—ด์€ ๊ฐ์ฒด์˜ ํ•œ ์ข…๋ฅ˜๋กœ์„œ, C๋‚˜ ์ž๋ฐ”์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ์ž์œ ๋กญ๋‹ค.

 

 

* ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ํ†ตํ•œ ๋ฐฐ์—ด ์ƒ์„ฑ

 

var Arr = ['a', 'b', 'c', 1, true];
console.log(Arr[0]); // a
console.log(Arr[7]); // undefined
console.log(Arr.length); //5
console.log(Arr); 

 

๋ฌธ์ž์—ด, ๋„˜๋ฒ„, boolean ๊ฐ’์ด ์ „๋ถ€ ์žˆ๋Š” ๋ฐฐ์—ด์„ ๋Œ€๊ด„ํ˜ธ([])๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์˜€๋‹ค. ๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ •์˜๋˜์ง€ ์•Š์€ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ•˜๋ฉด undefined์ด ์ถœ๋ ฅ๋œ๋‹ค. ๊ฐ์ฒด์—์„œ ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ undefined๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ƒํ™ฉ์ธ๋ฐ, ๋ฐฐ์—ด ์—ญ์‹œ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

console.log(Arr);

 

Arr.length๋Š” ๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ๋ฐฐ์—ด์˜ ์›์†Œ ๊ฐœ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ์ด๋‹ค. ๋ชจ๋“  ๋ฐฐ์—ด์€ length ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

 

 

 

* ๋ฐฐ์—ด ์š”์†Œ ๋™์  ์ƒ์„ฑํ•˜๊ธฐ

 

var Arr = [];

Arr[0] = 1;
Arr[3] = 10;
Arr[7] = 3;
console.log(Arr);
console.log(Arr.length);

 

console.log(Arr);

 

Arr๋ผ๋Š” ๋นˆ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ ํ›„์— ์„ธ ๊ฐœ์˜ ๊ฐ’์„ ํ• ๋‹นํ•˜์˜€๋‹ค. ์กด์žฌํ•˜๋Š” ์ธ๋ฑ์Šค ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ •ํ•œ๋‹ค. ์œ„ ์ฝ”๋“œ ์˜ˆ์‹œ์—์„œ๋Š” ๊ฐ€์žฅ ํฐ ์ธ๋ฑ์Šค๋กœ Arr[7]์„ ์„ ์–ธํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ๊ธธ์ด๊ฐ€ 8์ธ ๋ฐฐ์—ด์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ์š”์†Œ๋ผ๋ฉด empty๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. ์ฆ‰, length ํ”„๋กœํผํ‹ฐ ๊ฐ’๊ณผ ๋ฐฐ์—ด ์š”์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ•ญ์ƒ ๊ฐ™์€ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

์ด ์ƒํƒœ์—์„œ Arr[10]์˜ ๊ฐ’์„ ๋™์  ์ƒ์„ฑํ•œ๋‹ค๋ฉด Arr.length์˜ ๊ฐ’์€ 11์ด ๋  ๊ฒƒ์ด๋‹ค. length ๊ฐ’์€ ๋Š˜์–ด๋‚˜์ง€๋งŒ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ทธ๋งŒํผ ํ• ๋‹น๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

 

 

* ๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ ๋ช…์‹œ์  ๋ณ€๊ฒฝํ•˜๊ธฐ

 

 

์œ„์˜ ์˜ˆ์ œ๋ฅผ ๊ณ„์†ํ•ด์„œ ํ™œ์šฉํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

var Arr = [];

Arr[0] = 1;
Arr[3] = 10;
Arr[7] = 3;

Arr.length = 10; // length๋ฅผ 10์œผ๋กœ ๋ณ€๊ฒฝ
console.log(Arr); // [1, empty × 2, 10, empty × 3, 3, empty × 2]

Arr.length = 2; // length๋ฅผ 2๋กœ ๋ณ€๊ฒฝ
console.log(Arr); // [1, empty]
console.log(Arr[3]); // undefined

 

Arr.length์— ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Arr๋ฅผ ์ถœ๋ ฅํ•ด ๋ณด๋ฉด, ๋Š˜์–ด๋‚œ ์ธ๋ฑ์Šค์— ๋งž์ถ”์–ด ์—†๋Š” ๊ฐ’๋“ค์€ empty๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

 

10์ด์—ˆ๋˜ length๋ฅผ 2๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ž์—์„œ๋ถ€ํ„ฐ [length-1] ์ธ๋ฑ์Šค๊นŒ์ง€๋งŒ ๋‚จ๊ณ  ๋‚˜๋จธ์ง€๋Š” ์‚ญ์ œ๋œ๋‹ค.

 

 

 

* ๋ฐฐ์—ด ํ‘œ์ค€ ๋ฉ”์†Œ๋“œ - push()

 

push() ๋ฉ”์†Œ๋“œ๋Š” ์ธ์ˆ˜์˜ ๊ฐ’์„ ๋ฐฐ์—ด์˜ ๋์— ์ถ”๊ฐ€ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œ์ค€ ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ์ด๋‹ค.

 

var arr = [0, 1, 2];

arr.push(3);
console.log(arr); // [0, 1, 2, 3]

arr.length = 5;
console.log(arr); // [0, 1, 2, 3, empty]

arr.push(4);
console.log(arr); // [0, 1, 2, 3, empty, 4]

 

 

* ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด

 

๋ฐฐ์—ด์€ ๊ฐ์ฒด์˜ ํ•œ ์ข…๋ฅ˜์ด์ง€๋งŒ ์ผ๋ฐ˜ ๊ฐ์ฒด์™€๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 

// ๋ฐฐ์—ด
var arr = ['a', 'b', 'c'];

// ๊ฐ์ฒด
var obj = {
    '0': 'a',
    '1': 'b',
    '2': 'c'
};


// typeof
console.log(typeof arr); // object
console.log(typeof obj); // object

// length
console.log(arr.length); // 3
console.log(obj.length); // undefined

// push ๋ฉ”์†Œ๋“œ (๋ฐฐ์—ด ํ‘œ์ค€ ๋ฉ”์†Œ๋“œ)
arr.push('d');
obj.push('d'); // ์—๋Ÿฌ ๋ฐœ์ƒ

 

์ผ๋ฐ˜ ๊ฐ์ฒด์ธ obj๋Š” length ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ undefined๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. ๋˜ํ•œ ๋ฐฐ์—ด ํ‘œ์ค€ ๋ฉ”์†Œ๋“œ์ธ push() ์—ญ์‹œ ์ผ๋ฐ˜ ๊ฐ์ฒด์—์„œ๋Š” ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ฐ์ฒด์˜ ๋ถ€๋ชจ ๊ฐ์ฒด, ์ฆ‰ ํ”„๋กœํ† ํƒ€์ž…์€ Object.prototype ๊ฐ์ฒด์ด๊ณ , ๋ฐฐ์—ด์˜ ํ”„๋กœํ† ํƒ€์ž…์€ Array.prototype ๊ฐ์ฒด์ด๋‹ค. ์ด ๋‘ ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

 

https://exploringjs.com/impatient-js/ch_proto-chains-classes.html

 

์œ„์™€ ๊ฐ™์€ ์ƒ์† ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ฐฐ์—ด์—์„œ๋Š” Array.prototype์˜ ๋ฉ”์†Œ๋“œ, Object.prototype์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ „๋ถ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ฐฐ์—ด์˜ ํ”„๋กœํ† ํƒ€์ž…=>console.log(arr.__proto__);

 

 

๊ฐ์ฒด์˜ ํ”„๋กœํ† ํƒ€์ž…=>console.log(obj.__proto__);

 

๋ฐฐ์—ด์˜ ํ”„๋กœํ† ํƒ€์ž…์˜ ๊ทธ๋ฆผ์—์„œ ๊ฐ€์žฅ ํ•˜๋‹จ์˜ ์žˆ๋Š” __proto__๋Š” Array.prototype์ด ์ƒ์†ํ•˜๊ณ  ์žˆ๋Š” Object.prototype์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

 

* ๋ฐฐ์—ด์˜ ํ”„๋กœํผํ‹ฐ ๋™์  ์ƒ์„ฑ

 

๋ฐฐ์—ด์—์„œ๋„ ์ผ๋ฐ˜ ๊ฐ์ฒด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋™์ ์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

var arr = ['a', 'b', 'c'];

arr.color = 'blue';
arr.name = 'array test';

console.log(arr);

arr[3] = 'd';

console.log(arr.length); // 4

 

console.log(arr);

 

๋ฐฐ์—ด๋„ ๊ฐ์ฒด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 'key':'value' ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด ์›์†Œ์™€ ํ”„๋กœํผํ‹ฐ ๋“ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋งŒ์•ฝ arr[0] = 'aaa'; ๋ผ๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐฐ์—ด ์š”์†Œ์˜ ๊ฐ’์ด ๊ฐฑ์‹ ๋œ๋‹ค.

 

ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ์ฒด์˜ length์—๋Š” ๋ณ€ํ™”๊ฐ€ ์—†๊ณ , ๋ฐฐ์—ด ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ length ๊ฐ’์ด ๊ฐฑ์‹ ๋œ๋‹ค.

 

 

 

โ€ป ์ฐธ๊ณ . console.log์˜ ๋™๊ธฐ์  ์‹คํ–‰

"this value was evaluated upon first expanding. it may have changed since then." ๊ด€๋ จ

 

๋”๋ณด๊ธฐ
var arr = ['a', 'b', 'c'];
console.log(arr); // ["a", "b", "c"]

arr[0] = 'aaa';
console.log(arr); // ["aaa", "b", "c"]

 

 

์ฒซ๋ฒˆ์งธ console.log์—๋Š” ์ธ๋ฑ์Šค 0์˜ ๊ฐ’์ด a๋กœ ๋‚˜ํƒ€๋‚˜์ง€๋งŒ, ํ™”์‚ดํ‘œ๋ฅผ ํ™•์žฅํ–ˆ์„ ๋•Œ์˜ ๊ฐ’์€ aaa๊ฐ€ ๋œ๋‹ค. i์— ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ€์ ธ๋‹ค ๋Œ€๋ฉด "this value was evaluated upon first expanding. it may have changed since then." ๋ผ๋Š” ์•Œ๋ฆผ์ด ๋œฌ๋‹ค.

ํ™”์‚ดํ‘œ๋ฅผ ๋ˆŒ๋Ÿฌ ํ™•์žฅํ–ˆ์„ ๋•Œ์˜ ๊ฐ’์€ ๊ฐ์ฒด์˜ ํ˜„์žฌ ์ƒํƒœ, ์ฆ‰ ๋ฐ”๋€Œ๊ณ  ๋‚œ ์ƒํƒœ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— aaa ๊ฐ’์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

console.log๋Š” ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋™๊ธฐ์ ์œผ๋กœ ์ˆ˜์‹ ํ•˜์ง€๋งŒ ํ™•์žฅ๋  ๋•Œ๊นŒ์ง€๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ์„ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ํ™•์žฅํ–ˆ์„ ๋•Œ๋Š” ๊ฐ์ฒด์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ํ•ด๋‹น ์‹œ์ ์— ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋””๋ฒ„๊ฑฐ๋ฅผ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ์š”์†Œ ๋ณ„๋กœ ์ฝ˜์†”์„ ์ฐ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

console.log(arr[0], arr[1], arr[2])์™€ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค.

 

 

* ๋ฐฐ์—ด ํ”„๋กœํผํ‹ฐ ์—ด๊ฑฐ

 

// ํ”„๋กœํผํ‹ฐ๊นŒ์ง€ ์ถœ๋ ฅ
for(var prop in arr){
    console.log(prop, arr[prop]);
}

// ๋ฐฐ์—ด ์š”์†Œ๋งŒ ์ถœ๋ ฅ
for(var i=0; i<arr.length; i++){
    console.log(i, arr[i]);
}

 

 

 

* ๋ฐฐ์—ด ์š”์†Œ ์‚ญ์ œ

 

- delete ์—ฐ์‚ฐ์ž

 

var arr = ['a', 'b', 'c'];
delete arr[0];
console.log(arr); // [empty, "b", "c"]
console.log(arr.length); // 3

 

delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ undefined๊ฐ€ ๋˜๋Š” ๊ฒƒ์ผ ๋ฟ, ์™„์ „ํžˆ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

 

- splice(start, deleteCount, items) 

 

start : ์‚ญ์ œ๋ฅผ ์‹œ์ž‘ํ•  ์œ„์น˜

deleteCount : ์‚ญ์ œํ•  ์š”์†Œ์˜ ์ˆ˜

items : ์‚ญ์ œํ•  ์œ„์น˜์— ์ถ”๊ฐ€ํ•  ์š”์†Œ (์—ฌ๋Ÿฌ ๊ฐœ ๊ฐ€๋Šฅ, ์ƒ๋žต ๊ฐ€๋Šฅ)

 

 

var arr = ['a', 'b', 'c'];
arr.splice(0, 1);
console.log(arr); // ["b", "c"]
console.log(arr.length); // 2

 

var arr = ['a', 'b', 'c'];
arr.splice(0, 1, 'zzz', 'xxx', 'yyy');
console.log(arr); // ["zzz", "xxx", "yyy", "b", "c"]
console.log(arr.length); // 5

 

์›น์Šคํ†ฐ์—์„œ๋Š” ์ด ๋ณ€์ˆ˜๊ฐ€ ์–ด๋–ค ์˜๋ฏธ์ธ์ง€๋„ ํ‘œ์‹œํ•ด ์ค€๋‹ค. ๋งค์šฐ ํŽธ๋ฆฌํ•จ.

 

 

 

* Array ์ƒ์„ฑ์ž ํ•จ์ˆ˜

 

์•ž์„œ ์‚ดํŽด๋ณธ ๊ฒƒ๊ณผ ๊ฐ™์ด ๋ฐฐ์—ด์€ ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ Array() ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

// ๊ธธ์ด๊ฐ€ 3์ธ ๋ฐฐ์—ด ์ƒ์„ฑ. ์š”์†Œ๋Š” ์ „๋ถ€ undefined
var foo = new Array(3);
console.log(foo);

// 1, 2, 3 ์ด๋ผ๋Š” ์š”์†Œ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด ์ƒ์„ฑ
var foo2 = new Array(1, 2, 3);
console.log(foo2);

 

 

 

* ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด

 

๋ฐฐ์—ด์˜ ํ”„๋กœํ† ํƒ€์ž…์ธ Array.prototype๋Š” length ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ๋ฐฐ์—ด์€ ์ด๋ฅผ ์ƒ์†ํ•˜์—ฌ length ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์›์น™์ ์œผ๋กœ ์ผ๋ฐ˜ ๊ฐ์ฒด๋Š” length๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜์ง€๋งŒ, length ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง„ ์ผ๋ฐ˜ ๊ฐ์ฒด๋ผ๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ผ๋ฐ˜ ๊ฐ์ฒด๋ฅผ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด(array-like objects)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋Š” ์ผ๋ฐ˜ ๊ฐ์ฒด์ž„์—๋„ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์˜ ํ‘œ์ค€ ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

// ๋ฐฐ์—ด
var arr = ['bar'];

// ๊ฐ์ฒด
var obj = {
    name: 'foo',
    length: 1
};

arr.push('baz');
console.log(arr); // ['bar', 'baz']

Array.prototype.push.apply(obj, ['baz']); // ์ผ๋ฐ˜ ๊ฐ์ฒด์— push() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœํ•ด์„œ 'baz' ์›์†Œ ์ถ”๊ฐ€
console.log(obj); // {1: "baz", name: "foo", length: 2}

 

์ผ๋ฐ˜ ๊ฐ์ฒด๋Š” obj.push('baz')์™€ ๊ฐ™์ด push ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†๋‹ค. ํ•˜์ง€๋งŒ obj๋Š” length ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง„ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด์ด๋ฏ€๋กœ apply() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ‘œ์ค€ ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. '1' ํ”„๋กœํผํ‹ฐ์— 'baz' ๊ฐ’์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ์ถœ๋ ฅ๊ฐ’์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.