1. ๊ฐ์ฒด(Object)๋?
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด(object) ๊ธฐ๋ฐ์ ์คํฌ๋ฆฝํธ ์ธ์ด์ด๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด๋ฃจ๊ณ ์๋ ๊ฑฐ์ โ๋ชจ๋ ๊ฒโ์ด ๊ฐ์ฒด์ด๋ค.
ย
1) ํ๋กํผํฐ
ํ๋กํผํฐ๋ ํ๋กํผํฐ ํค(์ด๋ฆ)์ ํ๋กํผํฐ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋๋ค. ํ๋กํผํฐ๋ ํ๋กํผํฐ ํค๋ก ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ค. ์ฆ, ํ๋กํผํฐ ํค๋ ํ๋กํผํฐ๋ฅผ ์๋ณํ๊ธฐ ์ํ ์๋ณ์(identifier)๋ค. ํ๋กํผํฐ ํค์ ๋ช
๋ช
๊ท์น๊ณผ ํ๋กํผํฐ ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฐ์ ์๋์ ๊ฐ๋ค.
- ํ๋กํผํฐ ํค : ๋น ๋ฌธ์์ด์ ํฌํจํ๋ ๋ชจ๋ ๋ฌธ์์ด ๋๋ symbol ๊ฐ
- ํ๋กํผํฐ ๊ฐ : ๋ชจ๋ ๊ฐ
ํ๋กํผํฐ ํค์ ๋ฌธ์์ด์ด๋ symbol ๊ฐ ์ด์ธ์ ๊ฐ์ ์ง์ ํ๋ฉด ์๋ฌต์ ์ผ๋ก ํ์
์ด ๋ณํ๋์ด ๋ฌธ์์ด์ด ๋๋ค. ์ด๋ฏธ ์กด์ฌํ๋ ํ๋กํผํฐ ํค๋ฅผ ์ค๋ณต ์ ์ธํ๋ฉด ๋์ค์ ์ ์ธํ ํ๋กํผํฐ๊ฐ ๋จผ์ ์ ์ธํ ํ๋กํผํฐ๋ฅผ ๋ฎ์ด์ด๋ค. ๋ฐฐ์ด๊ณผ๋ ๋ฌ๋ฆฌ ๊ฐ์ฒด๋ ํ๋กํผํฐ๋ฅผ ์ด๊ฑฐํ ๋ ์์๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค.
ย
2) ๋ฉ์๋
ํ๋กํผํฐ ๊ฐ์ด ํจ์์ผ ๊ฒฝ์ฐ, ์ผ๋ฐ ํจ์์ ๊ตฌ๋ถํ๊ธฐ ์ํด ๋ฉ์๋๋ผ ๋ถ๋ฅธ๋ค. ์ฆ, ๋ฉ์๋๋ ๊ฐ์ฒด์ ์ ํ๋์ด ์๋ ํจ์๋ฅผ ์๋ฏธํ๋ค.
ย
2. ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ
1) ๊ฐ์ฒด ๋ฆฌํฐ๋ด
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์์ด๋ค. ํด๋์ค ๊ธฐ๋ฐ ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ๋น๊ตํ ๋ ๋งค์ฐ ๊ฐํธํ๊ฒ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค. ({})
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋๋ฐ {}
๋ด์ 1๊ฐ ์ด์์ ํ๋กํผํฐ๋ฅผ ๊ธฐ์ ํ๋ฉด ํด๋น ํ๋กํผํฐ๊ฐ ์ถ๊ฐ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค. {}
๋ด์ ์๋ฌด๊ฒ๋ ๊ธฐ์ ํ์ง ์์ผ๋ฉด ๋น ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
var emptyObject = {};
console.log(typeof emptyObject); // object
var person = {
name: 'Lee',
gender: 'male',
sayHello: function () {
console.log('Hi! My name is ' + this.name);
}
};
console.log(typeof person); // object
console.log(person); // {name: "Lee", gender: "male", sayHello: ฦ}
person.sayHello(); // Hi! My name is Lee
ย
2) Object ์์ฑ์ ํจ์
new ์ฐ์ฐ์์ Object ์์ฑ์ ํจ์๋ฅผ ํธ์ถํ์ฌ ๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
- ์์ฑ์(constructor) ํจ์๋ new ํค์๋์ ํจ๊ป ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐํํ๋ ํจ์๋ฅผ ๋งํ๋ค. ์์ฑ์ ํจ์๋ฅผ ํตํด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค(instance)๋ผ ํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ Object ์์ฑ์ ํจ์ ์ด์ธ์๋ String, Number, Boolean, Array, Date, RegExp ๋ฑ์ ๋นํธ์ธ ์์ฑ์ ํจ์๋ฅผ ์ ๊ณตํ๋ค. ์ผ๋ฐ ํจ์์ ์์ฑ์ ํจ์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์์ฑ์ ํจ์์ ์ด๋ฆ์ ํ์ค์นผ ์ผ์ด์ค(PascalCase)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
// ๋น ๊ฐ์ฒด์ ์์ฑ
var person = new Object();
// ํ๋กํผํฐ ์ถ๊ฐ
person.name = 'Lee';
person.gender = 'male';
person.sayHello = function () {
console.log('Hi! My name is ' + this.name);
};
console.log(typeof person); // object
console.log(person); // {name: "Lee", gender: "male", sayHello: ฦ}
person.sayHello(); // Hi! My name is Lee
- ๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐฉ์์ผ๋ก ์์ฑ๋ ๊ฐ์ฒด๋ ๊ฒฐ๊ตญ ๋นํธ์ธ(Built-in) ํจ์์ธ Object ์์ฑ์ ํจ์๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋จ์ํ์ํจ ์ถ์ฝ ํํ(short-hand)์ด๋ค.
ย
3) ์์ฑ์ ํจ์
๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐฉ์๊ณผ Object ์์ฑ์ ํจ์ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ ํ๋กํผํฐ ๊ฐ๋ง ๋ค๋ฅธ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ถํธํ๋ค. ๋์ผํ ํ๋กํผํฐ๋ฅผ ๊ฐ๋ ๊ฐ์ฒด์์๋ ๋ถ๊ตฌํ๊ณ ๋งค๋ฒ ๊ฐ์ ํ๋กํผํฐ๋ฅผ ๊ธฐ์ ํด์ผ ํ๋ค.
var person1 = {
name: 'Lee',
gender: 'male',
sayHello: function () {
console.log('Hi! My name is ' + this.name);
}
};
var person2 = {
name: 'Kim',
gender: 'female',
sayHello: function () {
console.log('Hi! My name is ' + this.name);
}
};
์์ฑ์ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ง์น ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ ํ๋ฆฟ(ํด๋์ค)์ฒ๋ผ ์ฌ์ฉํ์ฌ ํ๋กํผํฐ๊ฐ ๋์ผํ ๊ฐ์ฒด ์ฌ๋ฌ ๊ฐ๋ฅผ ๊ฐํธํ๊ฒ ์์ฑํ ์ ์๋ค.
// ์์ฑ์ ํจ์
function Person(name, gender) {
this.name = name;
this.gender = gender;
this.sayHello = function(){
console.log('Hi! My name is ' + this.name);
};
}
// ์ธ์คํด์ค์ ์์ฑ
var person1 = new Person('Lee', 'male');
var person2 = new Person('Kim', 'female');
console.log('person1: ', typeof person1);
console.log('person2: ', typeof person2);
console.log('person1: ', person1);
console.log('person2: ', person2);
person1.sayHello();
person2.sayHello();
- ์์ฑ์ ํจ์ ์ด๋ฆ์ ์ผ๋ฐ์ ์ผ๋ก ๋๋ฌธ์๋ก ์์ํ๋ค. ์ด๊ฒ์ ์์ฑ์ ํจ์์์ ์ธ์ํ๋๋ก ๋์์ ์ค๋ค.
- ํ๋กํผํฐ ๋๋ ๋ฉ์๋๋ช
์์ ๊ธฐ์ ํ
this
๋ ์์ฑ์ ํจ์๊ฐ ์์ฑํ ์ธ์คํด์ค(instance)๋ฅผ ๊ฐ๋ฆฌํจ๋ค. - this์ ์ฐ๊ฒฐ(๋ฐ์ธ๋ฉ)๋์ด ์๋ ํ๋กํผํฐ์ ๋ฉ์๋๋
public
(์ธ๋ถ์์ ์ฐธ์กฐ ๊ฐ๋ฅ)ํ๋ค. - ์์ฑ์ ํจ์ ๋ด์์ ์ ์ธ๋ ์ผ๋ฐ ๋ณ์๋
private
(์ธ๋ถ์์ ์ฐธ์กฐ ๋ถ๊ฐ๋ฅ)ํ๋ค. ์ฆ, ์์ฑ์ ํจ์ ๋ด๋ถ์์๋ ์์ ๋กญ๊ฒ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋ค.
function Person(name, gender) {
var married = true; // private
this.name = name; // public
this.gender = gender; // public
this.sayHello = function(){ // public
console.log('Hi! My name is ' + this.name);
};
}
var person = new Person('Lee', 'male');
console.log(typeof person); // object
console.log(person); // Person { name: 'Lee', gender: 'male', sayHello: [Function] }
console.log(person.gender); // 'male'
console.log(person.married); // undefined
์๋ฐ์คํฌ๋ฆฝํธ์ ์์ฑ์ ํจ์๋ ์ด๋ฆ ๊ทธ๋๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํจ์์ด๋ค. ํ์ง๋ง ์๋ฐ์ ๊ฐ์ ํด๋์ค ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ์ธ์ด์ ์์ฑ์(constructor)์๋ ๋ค๋ฅด๊ฒ ๊ทธ ํ์์ด ์ ํด์ ธ ์๋ ๊ฒ์ด ์๋๋ผ ๊ธฐ์กด ํจ์์ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ์์ฑ์ ํจ์๋ฅผ ์ ์ธํ๊ณ new ์ฐ์ฐ์๋ฅผ ๋ถ์ฌ์ ํธ์ถํ๋ฉด ํด๋น ํจ์๋ ์์ฑ์ ํจ์๋ก ๋์ํ๋ค.
์ด๋ ์์ฑ์ ํจ์๊ฐ ์๋ ์ผ๋ฐ ํจ์์ new ์ฐ์ฐ์๋ฅผ ๋ถ์ฌ ํธ์ถํ๋ฉด ์์ฑ์ ํจ์์ฒ๋ผ ๋์ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋ฐ๋ผ์ ์ผ๋ฐ์ ์ผ๋ก ์์ฑ์ ํจ์๋ช ์ ์ฒซ๋ฌธ์๋ฅผ ๋๋ฌธ์๋ก ๊ธฐ์ ํ์ฌ ํผ๋์ ๋ฐฉ์งํ๋ ค๋ ๋ ธ๋ ฅ์ ํ๋ค.
new ์ฐ์ฐ์์ ํจ๊ป ํจ์๋ฅผ ํธ์ถํ๋ฉด this
๋ฐ์ธ๋ฉ์ด ๋ค๋ฅด๊ฒ ๋์ํ๋ค.
ย
3. ๊ฐ์ฒด ํ๋กํผํฐ ์ ๊ทผ
1) ํ๋กํผํฐ ํค
ํ๋กํผํฐ ํค๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์์ด(๋น ๋ฌธ์์ด ํฌํจ)์ ์ง์ ํ๋ค. ํ๋กํผํฐ ํค์ ๋ฌธ์์ด์ด๋ symbol ๊ฐ ์ด์ธ์ ๊ฐ์ ์ง์ ํ๋ฉด ์๋ฌต์ ์ผ๋ก ํ์ ์ด ๋ณํ๋์ด ๋ฌธ์์ด์ด ๋๋ค. ๋ํ ๋ฌธ์์ด ํ์ ์ ๊ฐ์ผ๋ก ์๋ ด๋ ์ ์๋ ํํ์๋ ๊ฐ๋ฅํ๋ค. ํ๋กํผํฐ ํค๋ ๋ฌธ์์ด์ด๋ฏ๋ก ๋ฐ์ดํ(โโ ๋๋ โโ)๋ฅผ ์ฌ์ฉํ๋ค. ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํจํ ์ด๋ฆ์ธ ๊ฒฝ์ฐ, ๋ฐ์ดํ๋ฅผ ์๋ตํ ์ ์๋ค. ๋ฐ๋๋ก ๋งํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํจํ ์ด๋ฆ์ด ์๋ ๊ฒฝ์ฐ, ๋ฐ๋์ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํ์ฌ์ผ ํ๋ค.
ํ๋กํผํฐ ๊ฐ์ ๋ชจ๋ ๊ฐ๊ณผ ํํ์์ด ์ฌ ์ ์์ผ๋ฉฐ ํ๋กํผํฐ ๊ฐ์ด ํจ์์ธ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ฉ์๋๋ผ ํ๋ค.
var person = {
'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',
1: 10,
function: 1 // OK. ํ์ง๋ง ์์ฝ์ด๋ ์ฌ์ฉํ์ง ๋ง์์ผ ํ๋ค.
};
console.log(person);
ํ๋กํผํฐ ํค first-name์๋ ๋ฐ๋์ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํด์ผ ํ์ง๋ง first_name์๋ ์๋ต ๊ฐ๋ฅํ๋ค. first-name์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํจํ ์ด๋ฆ์ด ์๋๋ผ โ-โ ์ฐ์ฐ์๊ฐ ์๋ ํํ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
var person = {
first-name: 'Ung-mo', // SyntaxError: Unexpected token -
};
ํํ์์ ํ๋กํผํฐ ํค๋ก ์ฌ์ฉํ๋ ค๋ฉด ํค๋ก ์ฌ์ฉํ ํํ์์ ๋๊ดํธ๋ก ๋ฌถ์ด์ผ ํ๋ค. ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํํ์์ ํ๊ฐํ๊ธฐ ์ํด ์๋ณ์ first๋ฅผ ์ฐพ์ ๊ฒ์ด๊ณ ์ด๋ ReferenceError๊ฐ ๋ฐ์ํ๋ค.
var person = {
[first-name]: 'Ung-mo', // ReferenceError: first is not defined
};
์์ฝ์ด๋ฅผ ํ๋กํผํฐ ํค๋ก ์ฌ์ฉํ์ฌ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง๋ ์๋๋ค. ํ์ง๋ง ์์์น ๋ชปํ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ์์ฝ์ด๋ฅผ ํ๋กํผํฐ ํค๋ก ์ฌ์ฉํด์๋ ์๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์์ฝ์ด๋ ์๋์ ๊ฐ๋ค.
abstract arguments boolean break byte
case catch char class* const
continue debugger default delete do
double else enum* eval export*
extends* false final finally float
for function goto if implements
import* in instanceof int interface
let long native new null
package private protected public return
short static super* switch synchronized
this throw throws transient true
try typeof var void volatile
while with yield
// *๋ ES6์์ ์ถ๊ฐ๋ ์์ฝ์ด
ย
2) ํ๋กํผํฐ ๊ฐ ์ฝ๊ธฐ
๊ฐ์ฒด์ ํ๋กํผํฐ ๊ฐ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๋ง์นจํ(.) ํ๊ธฐ๋ฒ
๊ณผ ๋๊ดํธ([]) ํ๊ธฐ๋ฒ
์ด ์๋ค.
var person = {
'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',
1: 10
};
console.log(person);
console.log(person.first-name); // NaN: undefined-undefined
console.log(person[first-name]); // ReferenceError: first is not defined
console.log(person['first-name']); // 'Ung-mo'
console.log(person.gender); // 'male'
console.log(person[gender]); // ReferenceError: gender is not defined
console.log(person['gender']); // 'male'
console.log(person['1']); // 10
console.log(person[1]); // 10 : person[1] -> person['1']
console.log(person.1); // SyntaxError
ํ๋กํผํฐ ํค๊ฐ ์ ํจํ ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ฆ์ด๊ณ ์์ฝ์ด๊ฐ ์๋ ๊ฒฝ์ฐ ํ๋กํผํฐ ๊ฐ์ ๋ง์นจํ ํ๊ธฐ๋ฒ, ๋๊ดํธ ํ๊ธฐ๋ฒ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค.
ํ๋กํผํฐ ์ด๋ฆ์ด ์ ํจํ ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ฆ์ด ์๋๊ฑฐ๋ ์์ฝ์ด์ธ ๊ฒฝ์ฐ ํ๋กํผํฐ ๊ฐ์ ๋๊ดํธ ํ๊ธฐ๋ฒ์ผ๋ก ์ฝ์ด์ผ ํ๋ค. ๋๊ดํธ([]) ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋๊ดํธ ๋ด์ ๋ค์ด๊ฐ๋ ํ๋กํผํฐ ์ด๋ฆ์ ๋ฐ๋์ ๋ฌธ์์ด์ด์ด์ผ ํ๋ค.
๊ฐ์ฒด์ ์กด์ฌํ์ง ์๋ ํ๋กํผํฐ๋ฅผ ์ฐธ์กฐํ๋ฉด undefined
๋ฅผ ๋ฐํํ๋ค.
ย
3) ํ๋กํผํฐ ๊ฐ ๊ฐฑ์
๊ฐ์ฒด๊ฐ ์์ ํ๊ณ ์๋ ํ๋กํผํฐ์ ์๋ก์ด ๊ฐ์ ํ ๋นํ๋ฉด ํ๋กํผํฐ ๊ฐ์ ๊ฐฑ์ ๋๋ค.
var person = {
'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',
};
person['first-name'] = 'Kim';
console.log(person['first-name'] ); // 'Kim'
ย
4) ํ๋กํผํฐ ๋์ ์์ฑ
๊ฐ์ฒด๊ฐ ์์ ํ๊ณ ์์ง ์์ ํ๋กํผํฐ ํค์ ๊ฐ์ ํ ๋นํ๋ฉด ํ๋ฉด ์ฃผ์ด์ง ํค์ ๊ฐ์ผ๋ก ํ๋กํผํฐ๋ฅผ ์์ฑํ์ฌ ๊ฐ์ฒด์ ์ถ๊ฐํ๋ค.
var person = {
'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',
};
person.age = 20;
console.log(person.age); // 20
ย
5) ํ๋กํผํฐ ์ญ์
delete
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์ญ์ ํ ์ ์๋ค. ์ด๋ ํผ์ฐ์ฐ์๋ ํ๋กํผํฐ ํค์ด์ด์ผ ํ๋ค.
var person = {
'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',
};
delete person.gender;
console.log(person.gender); // undefined
delete person;
console.log(person); // Object {first-name: 'Ung-mo', last-name: 'Lee'}
ย
6) for-in ๋ฌธ
for-in ๋ฌธ
์ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด(๋ฐฐ์ด ํฌํจ)์ ํฌํจ๋ ๋ชจ๋ ํ๋กํผํฐ์ ๋ํด ๋ฃจํ๋ฅผ ์ํํ ์ ์๋ค.
var person = {
'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male'
};
// prop์ ๊ฐ์ฒด์ ํ๋กํผํฐ ์ด๋ฆ์ด ๋ฐํ๋๋ค. ๋จ, ์์๋ ๋ณด์ฅ๋์ง ์๋๋ค.
for (var prop in person) {
console.log(prop + ': ' + person[prop]);
}
/*
first-name: Ung-mo
last-name: Lee
gender: male
*/
var array = ['one', 'two'];
// index์ ๋ฐฐ์ด์ ๊ฒฝ์ฐ ์ธ๋ฑ์ค๊ฐ ๋ฐํ๋๋ค
for (var index in array) {
console.log(index + ': ' + array[index]);
}
/*
0: one
1: two
*/
for-in ๋ฌธ์ ๊ฐ์ฒด์ ๋ฌธ์์ด ํค(key)๋ฅผ ์ํํ๊ธฐ ์ํ ๋ฌธ๋ฒ์ด๋ค. ๋ฐฐ์ด์๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค. ์ด์ ๋ ์๋์ ๊ฐ๋ค.
- ๊ฐ์ฒด์ ๊ฒฝ์ฐ, ํ๋กํผํฐ์ ์์๊ฐ ๋ณด์ฅ๋์ง ์๋๋ค. ๊ทธ ์ด์ ๋ ์๋ ๊ฐ์ฒด์ ํ๋กํผํฐ์๋ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐฐ์ด์ ์์๋ฅผ ๋ณด์ฅํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด์ง๋ง ๊ฐ์ฒด์ ๋ง์ฐฌ๊ฐ์ง๋ก ์์๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค.
- ๋ฐฐ์ด ์์๋ค๋ง์ ์ํํ์ง ์๋๋ค.
// ๋ฐฐ์ด ์์๋ค๋ง์ ์ํํ์ง ์๋๋ค.
var array = ['one', 'two'];
array.name = 'my array';
for (var index in array) {
console.log(index + ': ' + array[index]);
}
/*
0: one
1: two
name: my array
*/
์ด์ ๊ฐ์ for-in ๋ฌธ์ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด ES6์์ for-of ๋ฌธ์ด ์ถ๊ฐ๋์๋ค.
forโin ๋ฌธ์ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์ํํ๊ธฐ ์ํด ์ฌ์ฉํ๊ณ forโof ๋ฌธ์ ๋ฐฐ์ด์ ์์๋ฅผ ์ํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
const array = [1, 2, 3];
array.name = 'my array';
for (const value of array) {
console.log(value);
}
/*
1
2
3
*/
for (const [index, value] of array.entries()) {
console.log(index, value);
}
/*
0 1
1 2
2 3
*/