Object - wooyeonhui/Yeonny GitHub Wiki

### ๊ฐ์ฒด(Object)๋ž€? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด(object)๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ด๋ฉฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๊ฑฐ์˜ โ€œ๋ชจ๋“  ๊ฒƒโ€์€ ๊ฐ์ฒด์ด๋‹ค. ๊ธฐ๋ณธ์ž๋ฃŒํ˜•(Primitives)์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๊ฐ’๋“ค(ํ•จ์ˆ˜, ๋ฐฐ์—ด, ์ •๊ทœํ‘œํ˜„์‹ ๋“ฑ)์€ ๋ชจ๋‘ ๊ฐ์ฒด์ด๋‹ค.

๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ์™€ ๊ทธ ๋ฐ์ดํ„ฐ์— ๊ด€๋ จ๋˜๋Š” ๋™์ž‘(์ ˆ์ฐจ, ๋ฐฉ๋ฒ•, ๊ธฐ๋Šฅ)์„ ๋ชจ๋‘ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋…์  ์กด์žฌ์ด๋‹ค. ๋‹ฌ๋ฆฌ ๋งํ•ด, ์ด๋ฆ„(ํ‚ค)๊ณผ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•˜๋Š” ํ”„๋กœํผํ‹ฐ(property)์™€ ๋™์ž‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์†Œ๋“œ(method)๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋…๋ฆฝ์  ์ฃผ์ฒด์ด๋‹ค.

๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ณณ์— ๋ชจ์œผ๊ณ  ๊ตฌ์กฐํ™”ํ•˜๋Š”๋ฐ ์œ ์šฉํ•˜๋‹ค. ๊ฐ์ฒด ํ•˜๋‚˜๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ž˜ํ”„๋‚˜ ํŠธ๋ฆฌ์™€ ๊ฐ™์€ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

### ํ”„๋กœํผํ‹ฐ(Property) ๊ฐ์ฒด๋Š” ์ด๋ฆ„(name)๊ณผ ๊ฐ’(value)์˜ ์Œ์ธ ํ”„๋กœํผํ‹ฐ๋“ค์„ ํฌํ•จํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœํผํ‹ฐ๋Š” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„๊ณผ ํ”„๋กœํผํ‹ฐ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์˜ ๋ช…๋ช… ๊ทœ์น™๊ณผ ํ”„๋กœํผํ‹ฐ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

* ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„ : ๋นˆ ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด๊ณผ ์ˆซ์ž
* ํ”„๋กœํผํ‹ฐ ๊ฐ’ : undefined์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฐ’

### ๋ฉ”์†Œ๋“œ(Method) ๋ฉ”์†Œ๋“œ๋Š” ๊ฐ์ฒด์— ์ œํ•œ๋˜์–ด ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰ ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ํ•จ์ˆ˜์ผ ๊ฒฝ์šฐ, ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์†Œ๋“œ๋ผ ์นญํ•œ๋‹ค.

### ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ•์ž๋ฐ”์—์„œ๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์ „์— ์ •์˜ํ•˜๊ณ  ํ•„์š”ํ•œ ์‹œ์ ์— new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ž˜์Šค๋ผ๋Š” ๊ฐœ๋…์ด ์—†๊ณ  ๋ณ„๋„์˜ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.

> ECMAScript 6์—์„œ ์ƒˆ๋กญ๊ฒŒ ํด๋ž˜์Šค๊ฐ€ ๋„์ž…๋˜์—ˆ๋‹ค. ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ๋กœ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ๊ณผ ํด๋กœ์ € ๋“ฑ์œผ๋กœ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์˜ ์ƒ์†, ์บก์Аํ™”(์ •๋ณด ์€๋‹‰) ๋“ฑ์˜ ๊ฐœ๋…์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ class ๊ธฐ๋ฐ˜ ์–ธ์–ด์— ์ต์ˆ™ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์€ ํ˜ผ๋ž€์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ JavaScript๋ฅผ ์–ด๋ ต๊ฒŒ ๋А๋ผ๊ฒŒํ•˜๋Š” ํ•˜๋‚˜์˜ ์žฅ๋ฒฝ์ฒ˜๋Ÿผ ์ธ์‹๋˜์—ˆ๋‹ค. ES6์˜ Class๋Š” ๊ธฐ์กด prototype ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ณด๋‹ค Class ๊ธฐ๋ฐ˜ ์–ธ์–ด์— ์ต์ˆ™ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ˆœํ•˜๊ณ  ๊นจ๋—ํ•œ ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•์„ ์ œ์‹œํ•˜๊ณ  ์žˆ๋‹ค. ES6์˜ Class๊ฐ€ ์ƒˆ๋กœ์šด ๊ฐ์ฒด์ง€ํ–ฅ ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ Class๋„ ์‚ฌ์‹ค ํ•จ์ˆ˜์ด๊ณ  ๊ธฐ์กด prototype ๊ธฐ๋ฐ˜ ํŒจํ„ด์˜ Syntactic sugar์ด๋‹ค.

### ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ด๊ณ  ๊ฐ„ํŽธํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ์‹์ด๋‹ค.

์ค‘๊ด„ํ˜ธ({})๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ {} ๋‚ด์— ์•„๋ฌด๊ฒƒ๋„ ๊ธฐ์ˆ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋นˆ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. {} ๋‚ด์— 1๊ฐœ ์ด์ƒ์˜ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„(Property name): ํ”„๋กœํผํ‹ฐ ๊ฐ’(Property value)์„ ๊ธฐ์ˆ ํ•˜๋ฉด ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

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: [Function: sayHello] }

person.sayHello(); // Hi! My name is Lee

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์— ์˜ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ์‹์˜ ํŠน์ง•์€ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”์—†์ด ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

Object() ์ƒ์„ฑ์ž ํ•จ์ˆ˜ยถ โ†‘

new ์—ฐ์‚ฐ์ž์™€ Object() ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋นˆ ๊ฐ์ฒด ์ƒ์„ฑ ์ดํ›„ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฐน์ฒด๋ฅผ ์™„์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ ๊ฐฑ์‹ ๋œ๋‹ค. ๊ฐ์ฒด๊ฐ€ ์†Œ์œ ํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด์— ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฐ’์„ ํ• ๋‹นํ•œ๋‹ค.

// ๋นˆ ๊ฐ์ฒด์˜ ์ƒ์„ฑ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: [Function] }

person.sayHello(); // Hi! My name is Lee

๋ฐ˜๋“œ์‹œ new ์—ฐ์‚ฐ์ž์™€ Object() ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นˆ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฐ„ํŽธํ•˜๋‹ค.

var person = {}; person.name = โ€˜Leeโ€™; person.gender = โ€˜maleโ€™; person.sayHello = function () {

console.log('Hi! My name is ' + this.name);

};

Object() ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๋ฐฉ์‹์€ ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•ด ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” ๊ฒฐ๊ตญ ๋‚ด์žฅ(Built-in) ํ•จ์ˆ˜์ธ Object() ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋‹จ์ˆœํ™” ์‹œํ‚จ short-hand(์ถ•์•ฝ๋ฒ•)์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋‚˜๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ Object() ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ƒ์„ฑ์ž ํ•จ์ˆ˜ยถ โ†‘

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹๊ณผ 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 = 'yes';        // 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); console.log(person);

console.log(person.gender); // โ€˜maleโ€™ console.log(person.married); // undefined

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์™€ ๊ฐ™์€ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์˜ ์ƒ์„ฑ์ž(Constructor)์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ทธ ํ˜•์‹์ด ์ •ํ•ด์ ธ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด ํ•จ์ˆ˜์— new ์—ฐ์‚ฐ์ž๋ฅผ ๋ถ™์—ฌ์„œ ํ˜ธ์ถœํ•˜๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ๋™์ž‘ํ•œ๋‹ค.

์ด๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ํ•จ์ˆ˜์— new ์—ฐ์‚ฐ์ž๋ฅผ ๋ถ™์—ฌ ํ˜ธ์ถœํ•˜๋ฉด ์ƒ์„ฑ์ž ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ช…์€ ์ฒซ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๊ธฐ์ˆ ํ•˜์—ฌ ํ˜ผ๋ž€์„ ๋ฐฉ์ง€ํ•˜๋ ค๋Š” ๋…ธ๋ ฅ์„ ํ•œ๋‹ค.

new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด this ๋ฐ”์ธ๋”ฉ์ด ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ํŒจํ„ด์„ ์ฐธ์กฐํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.

๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผยถ โ†‘

ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„ยถ โ†‘

ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์—๋Š” ๋ฌธ์ž์—ด(๋นˆ ๋ฌธ์ž์—ด ํฌํ•จ)๊ณผ ์ˆซ์ž๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ undefined์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฐ’๊ณผ ํ‘œํ˜„์‹์ด ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ํ•จ์ˆ˜์ธ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ฉ”์†Œ๋“œ๋ผ ํ•œ๋‹ค.

ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์˜ ๋”ฐ์˜ดํ‘œโ€ โ€œโ€๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํšจํ•œ ์ด๋ฆ„์ด๊ณ  ์˜ˆ์•ฝ์–ด๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋งํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํšจํ•œ ์ด๋ฆ„์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

var person = {

'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',
function: 1 // OK. ํ•˜์ง€๋งŒ ์˜ˆ์•ฝ์–ด๋Š” ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.

};

console.log(person.function);

ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„ first-name์—๋Š” ๋ฐ˜๋“œ์‹œ ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ first_name์—๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Š” first-name์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ํšจํ•œ ์ด๋ฆ„์ด ์•„๋‹ˆ๋ผ โ€˜-โ€™์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋Š” ํ‘œํ˜„์‹์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์˜ˆ์•ฝ์–ด๋ฅผ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์˜ˆ์•ฝ์–ด๋ฅผ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ์„œ๋Š” ์•Š๋œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์˜ˆ์•ฝ์–ด๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

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์—์„œ ์ถ”๊ฐ€๋œ ์˜ˆ์•ฝ์–ด

ํ”„๋กœํผํ‹ฐ ๊ฐ’ ์ฝ๊ธฐยถ โ†‘

๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜์—ฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

* ๋งˆ์นจํ‘œ(.)ํ‘œ๊ธฐ๋ฒ•
* ๋Œ€๊ด„ํ˜ธ([]) ํ‘œ๊ธฐ๋ฒ•

var person = {

'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',

};

console.log(person);

console.log(person.first-name); // NaN: undefined-name console.log(person); // ReferenceError: first is not defined console.log(person); // โ€˜Ung-moโ€™

console.log(person.gender); // โ€˜maleโ€™ console.log(person); // ReferenceError: gender is not defined console.log(person); // โ€˜maleโ€™

ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์ด ์œ ํšจํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„์ด๊ณ  ์˜ˆ์•ฝ์–ด๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ ๋งˆ์นจํ‘œ ํ‘œ๊ธฐ๋ฒ•, ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ• ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์ด ์œ ํšจํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ ์˜ˆ์•ฝ์–ด์ธ ๊ฒฝ์šฐ ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ฝ์–ด์•ผ ํ•œ๋‹ค. ๋Œ€๊ด„ํ˜ธ([]) ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋Œ€๊ด„ํ˜ธ ๋‚ด์— ๋“ค์–ด๊ฐ€๋Š” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•œ๋‹ค.

๊ฐ์ฒด์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐน์กฐํ•˜๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

var person = {

'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',

};

console.log(person.age); // undefined

ํ”„๋กœํผํ‹ฐ ๊ฐ’ ๊ฐฑ์‹ ยถ โ†‘

๊ฐ์ฒด๊ฐ€ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ ๊ฐฑ์‹ ๋œ๋‹ค.

var person = {

'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',

};

person = โ€˜Kimโ€™; console.log(person ); // โ€˜Kimโ€™

ํ”„๋กœํผํ‹ฐ ๋™์  ์ƒ์„ฑยถ โ†‘

๊ฐ์ฒด๊ฐ€ ์†Œ์œ ํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ์ฒด์— ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฐ’์„ ํ• ๋‹นํ•œ๋‹ค.

var person = {

'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male',

};

person.age = 20; console.log(person.age); // 20

ํ”„๋กœํผํ‹ฐ ์‚ญ์ œยถ โ†‘

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โ€™}

for-in ๋ฌธยถ โ†‘

for-in ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด์— ํฌํ•จ๋œ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด ๋ฃจํ”„๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

var person = {

'first-name': 'Ung-mo',
'last-name': 'Lee',
gender: 'male'

};

for(var prop in person) {

console.log(prop + ': ' + person[prop]);

}

/* first-name: Ung-mo last-name: Lee gender: male */

Pass-by-referenceยถ โ†‘

๊ธฐ๋ณธ์ž๋ฃŒํ˜• object๋ฅผ ๊ฐ์ฒดํ˜• ๋˜๋Š” ์ฐธ์กฐํ˜•์ด๋ผ ํ•œ๋‹ค. ์ฐธ์กฐํ˜•์ด๋ž€ ๊ฐ์ฒด์˜ ๋ชจ๋“  ์—ฐ์‚ฐ์ด ์‹ค์ œ๊ฐ’์ด ์•„๋‹Œ ์ฐธ์กฐ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ๋จ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด์— ๋ฐ˜ํ•ด ๊ธฐ๋ณธ์ž๋ฃŒํ˜•์˜ ๊ฐ’์€ ๊ฐ’(value)์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค. ์ฆ‰,๋ณต์‚ฌ๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค.์ด๋ฅผ pass-by-value๋ผ ํ•œ๋‹ค. ๊ธฐ๋ณธ์ž๋ฃŒํ˜•์€ ๊ฐ’์ด ํ•œ๋ฒˆ ์ •ํ•ด์ง€๋ฉด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์ง€๋งŒ(immutable), ๊ฐ์ฒด๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ํ”„๋กœํผํ‹ฐ๋“ค์˜ ์ง‘ํ•ฉ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค. immutable์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ์ฒด์™€ ๋ณ€๊ฒฝ๋ถˆ๊ฐ€์„ฑ(Immutability)์„ ์ฐธ์กฐํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.

// Pass-by-reference var foo = {

val: 10

}

var bar = foo; console.log(foo.val, bar.val); // 10 10 console.log(foo === bar); // true

bar.val = 20; console.log(foo.val, bar.val); // 20 20 console.log(foo === bar); // true

foo ๊ฐ์ฒด๋ฅผ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑํ•˜์˜€๋‹ค.์ด๋–„ ๋ณ€์ˆ˜ foo๋Š” ๊ฐ์ฒด ์ž์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์˜ ์ฐธ์กฐ๊ฐ’(address)๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค.

๋ณ€์ˆ˜ bar์— ๋ณ€์ˆ˜ foo์˜ ๊ฐ’์„ ํ• ๋‹นํ•˜์˜€๋‹ค. ๋ณ€์ˆ˜ foo์˜ ๊ฐ’์€ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๊ฐ’์ด๋ฏ€๋กœ ๋ณ€์ˆ˜ bar์—๋„ ๊ฐ™์€ ์ฐธ์กฐ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค. ์ฆ‰ ๋ณ€์ˆ˜ foo, bar ๋ชจ๋‘ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์˜ val ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๋ณ€์ˆ˜ foo, bar ๋ชจ๋‘ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋‘ ๋ณ€์ˆ˜ ๋ชจ๋‘ ๋ณ€๊ฒฝ๋œ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค. ๊ฐ์ฒด๋Š” ์ฐธ์กฐ(Reference) ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค. ๊ฒฐ์ฝ” ๋ณต์‚ฌ๋˜์ง€ ์•Š๋Š”๋‹ค.

>์•„๋ž˜์˜ ๊ฒฝ์šฐ๋Š” ์œ„์˜ ๊ฒฝ์šฐ์™€ ์•ฝ๊ฐ„ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

var foo = { val: 10 }; var bar = { val: 10 };

console.log(foo.val, bar.val); // 10 10 console.log(foo === bar); // false

var baz = bar;

console.log(baz.val, bar.val); // 10 10 console.log(baz === bar); // true

๋ณ€์ˆ˜ foo์™€ ๋ณ€์ˆ˜ bar๋Š” ๋น„๋ก ๋‚ด์šฉ์€ ๊ฐ™์ง€๋งŒ ๋ณ„๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ฐธ์กฐ๊ฐ’์„ ํ• ๋‹นํ•˜์˜€๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜ bar์˜ ์ฐธ์กฐ๊ฐ’์€ ๋™์ผํ•˜์ง€ ์•Š๋‹ค.

๋ณ€์ˆ˜ baz์—๋Š” ๋ณ€์ˆ˜ bar์˜ ๊ฐ’์„ ํ• ๋‹นํ•˜์˜€๋‹ค. ๊ฒฐ๊ตญ ๋ณ€์ˆ˜ baz์™€ ๋ณ€์ˆ˜ bar๋Š” ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค.๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜baz์™€ ๋ณ€์ˆ˜ bar์˜ ์ฐธ์กฐ๊ฐ’์€ ๋™์ผํ•˜๋‹ค.

var a = {}, b = {}, c = {}; // a, b, c๋Š” ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋นˆ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐconsole.log(a === b, a === c, b === c); // false false false

a = b = c = {}; // a, b, c๋Š” ๋ชจ๋‘ ๊ฐ™์€ ๋นˆ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐconsole.log(a === b, a === c, b === c); // true true true

Pass-by-valueยถ โ†‘

๊ธฐ๋ณธ์ž๋ฃŒํ˜•์˜ ๊ฐ’์€ ๊ฐ’(value)์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค. ์ฆ‰, ๋ณต์‚ฌ๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค. ์ด๋ฅผ pass-by-value๋ผ ํ•œ๋‹ค. ๊ธฐ๋ณธ์ž๋ฃŒํ˜•์€ ๊ฐ’์ด ํ•œ๋ฒˆ ์ •ํ•ด์ง€๋ฉด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.(immutable)

immutable์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ์ฒด์™€ ๋ณ€๊ฒฝ๋ถˆ๊ฐ€์„ฑ(Immutability)์„ ์ฐธ์กฐํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.

// Pass-by-value var a = 1; var b = a;

console.log(a, b); // 1 1 console.log(a === b); // true

a = 10; console.log(a, b); // 10 1 console.log(a === b); // false

๋ณ€์ˆ˜ a๋Š” ๊ธฐ๋ณธ์ž๋ฃŒํ˜•์ธ number type์˜ 1์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค. ๊ธฐ๋ณธ์ž๋ฃŒํ˜•์˜ ๊ฒฝ์šฐ ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ๋ณ€์ˆ˜์— ์ €์žฅ๋œ๋‹ค. ์ฆ‰ ์ฐธ์กฐํ˜•์œผ๋กœ ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ’ ์ž์ฒด๊ฐ€ ์ €์žฅ๋˜๊ฒŒ ๋œ๋‹ค. ๋ณ€์ˆ˜ b์— ๋ณ€์ˆ˜ a๋ฅผ ๋Œ€์ž…ํ•  ๊ฒฝ์šฐ,๋ณ€์ˆ˜ a์˜ ๊ฐ’1์€ ๋ณต์‚ฌ๋˜์–ด ๋ณ€์ˆ˜ b์— ์ €์žฅ๋œ๋‹ค.

๊ฐ์ฒด์˜ ๋ถ„๋ฅ˜ยถ โ†‘

๊ฐ์ฒด๋Š” ์•„๋ž˜์™€ ๊ฐ€์ด ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Built-in Object(๋‚ด์žฅ ๊ฐ์ฒด)๋Š” ์›นํŽ˜์ด์ง€ ๋“ฑ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๊ณตํ†ต์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์›นํŽ˜์ด์ง€๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ์˜ํ•ด ๋กœ๋“œ๋˜์ž๋งˆ์ž ๋ณ„๋‹ค๋ฅธ ํ–‰์œ„์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.Built-in Object๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • Standard Built-in Objects(or Global Objects)

    • BOM(Browser Object Model)

    • DOM(Document Object Model)

Standard Built-in Objects(ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด)๋ฅผ ์ œ์™ธํ•œ BOM๊ณผ DOM์„ Native Object๋ผ๊ณ  ๋ถ„๋ฅ˜ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ Host Object(์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด)๋ผ ํ•œ๋‹ค.

* Host Object(์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด)

์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋“ค์ด๋‹ค. constructor ํ˜น์€ ๊ฐ์ฒด๋ฆฌํ„ฐ๋Ÿด์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๊ณ  ํ™•์žฅ์‹œํ‚จ ๊ฒƒ๋“ค์ด๊ธฐ ๋–„๋ฌธ์— Built-in Object์™€ Native Object๊ฐ€ ๊ตฌ์„ฑ๋œ ์ดํ›„์— ๊ตฌ์„ฑ๋œ๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ