๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ–ฅ dev-ruby

[์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ | ๋ณ€์ˆ˜, ์ž๋ฃŒํ˜•, ๊ฐ์ฒด, ๋ฐฐ์—ด, ํ•จ์ˆ˜ ๋ณธ๋ฌธ

javascript

[์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ | ๋ณ€์ˆ˜, ์ž๋ฃŒํ˜•, ๊ฐ์ฒด, ๋ฐฐ์—ด, ํ•จ์ˆ˜

ruby_s 2021. 12. 20. 14:04
728x90
๋ฐ˜์‘ํ˜•
SMALL

์ธํ„ฐ๋„ท์œผ๋กœ ๊ณต๋ถ€ํ•ด์™”๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์‹œ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ œ๋Œ€๋กœ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๋ชจ๋ฅด๋Š”๊ฒŒ ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€ ๋•Œ๋„ ์ฐพ์•„๋ณด๋ฉด์„œ ํ•˜๊ฒŒ ๋ผ์„œ ๊ธฐ์ดˆ ๋‹ค์ง€๊ธฐ๋ถ€ํ„ฐ ์‹œ์ž‘..

1. ๋ณ€์ˆ˜

ES6 ์ด์ „์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ–ˆ๋‹ค.

var name = "Alberto";

 ES6 ๋ถ€ํ„ฐ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ๋” ์ถ”๊ฐ€๋๋‹ค.

let name = "Alberto";
const name = "Alberto";

์—ฌ๊ธฐ์„œ, 3๊ฐ€์ง€ ํ‚ค์›Œ๋“œ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ๊ฑฐ๋‹ค.

const ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑ๋œ ๋ณ€์ˆ˜๋Š” ์ƒ์ˆ˜์ด๋‹ค. ๊ฐ’์„ ๋ฎ์–ด ์“ธ ์ˆ˜ ์—†๋‹ค.

var์™€ let์€ ๊ฐ’์„ ๋ฎ์–ด ์“ธ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, ์šฐ๋ฆฌ๋Š” ์ฃผ๋กœ let์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ž‘๋™ ๋ฐฉ์‹์—์„œ ๋” ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

1.1 ๋ณ€์ˆ˜ ๋ช…๋ช…๋ฒ•

๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ง“๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

  • ์บ๋ฉ€ ์ผ€์ด์Šค (camelCase)
    • ์ฒซ๋ฒˆ์งธ ๋‹จ์–ด ๋‹ค์Œ์— ์ด์–ด์ง€๋Š” ๊ฐ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ํ•œ๋‹ค.
  • ์Šค๋„ค์ดํฌ ์ผ€์ด์Šค (snake_case)
    • ๊ฐ ๋‹จ์–ด ์‚ฌ์ด๋ฅผ ๋ฐ‘์ค„๋กœ ์ž‡๋Š”๋‹ค.

๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ •ํ•ด์„œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

// ๋‚˜์œ ์˜ˆ
let lastloggedin = "";
// ์ข‹์€ ์˜ˆ
let lastLoggedIn = "";		// ์บ๋ฉ€ ์ผ€์ด์Šค
let last_logged_in = "";	// ์Šค๋„ค์ดํฌ ์ผ€์ด์Šค

 


2. ์ž๋ฃŒํ˜•

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋™์  ์–ธ์–ด์ด๋‹ค. ์ฆ‰, ์ •์  ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ์ž๋ฃŒํ˜•์„ ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

์ฒ˜์Œ์—๋Š” ํŽธํ•ด๋ณด์ด์ง€๋งŒ, ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ฌธ์ œ์˜ ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—„๊ฒฉํ•œ ์ž๋ฃŒํ˜•์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ฐ•ํƒ€์ž… ์–ธ์–ด๋กœ ํƒˆ๋ฐ”๊ฟˆ ์‹œํ‚จ ์–ธ์–ด์ด๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ์ด 7๊ฐœ์˜ ์ž๋ฃŒํ˜•์ด ์žˆ๋‹ค.

6๊ฐœ๋Š” ์›์‹œ ์ž๋ฃŒํ˜•, 1๊ฐœ๋Š” ๊ฐ์ฒด๋‹ค.

 

์›์‹œ์ž๋ฃŒํ˜•

: ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ์ž๋ฃŒํ˜•์œผ๋กœ, ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค.

  • string : ๋ฌธ์ž์—ด
  • number : ์ˆซ์ž
  • boolean : ๋ถˆ๋ฆฌ์–ธ
  • null : ๋„ (๊ฐ’์ด ์—†์Œ)
  • undefined : ์ •์˜๋˜์ง€ ์•Š์€ ๊ฐ’
  • symbol : ์‹ฌ๋ฒŒ, ๊ณ ์œ ํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’ (ES6์—์„œ ์ถ”๊ฐ€๋๋‹ค.)

๊ฐ์ฒด

: ์—ฌ๋Ÿฌ ์†์„ฑ์˜ ๋ชจ์Œ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์‹œ) ์ฐจ์˜ ์†์„ฑ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด

const car = {
	wheels : 4,
	color: "red",
};

wheels, color ๋Š” key, 4, "red"๋Š” ๊ฐ’์ด ๋œ๋‹ค.

ํ‚ค์˜ ์ž๋ฃŒํ˜•์€ string์ด๋‹ค.

๊ฐ’์˜ ์ž๋ฃŒํ˜•์€ ๋ชจ๋“  ๋  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

const car = {
	wheels : 4,
	color: "red",
    	drive : function(){
    		console.log("wroom")
    	},
};

๊ฐ์ฒด car์—์„œ driveํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

console.log(Object.keys(car)[0]);		// wheels
console.log(typeof Object.keys(car)[0]);	// string
car.drive();	// wroom

 

๋นˆ ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ธฐ

: ๋นˆ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

const car = new Object();
const car = {};

 

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ๋ฒ•์ธ ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์–ด์žˆ๋Š” ์ƒˆ ๊ฐ์ฒด car์— ์ƒˆ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

car.color = 'red';
console.log(car);	// {color: "red"}

๊ฐ์ฒด์˜ ์†์„ฑ์— ์ ‘๊ทผํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

1. ์  ํ‘œ๊ธฐ๋ฒ•

car.wheels

2. ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•

car['color']

 

๋‘ ๋ฐฉ๋ฒ•์˜ ์ฐจ์ด์ 

์—ฌ๋Ÿฌ ๋‹จ์–ด๋กœ ์ด๋ฃจ์–ด์ง„ ์†์„ฑ์˜ ๊ฒฝ์šฐ ์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

const car = {
	wheels : 4,
	color: "red",
    	"goes fast": true,
};
car.goes fast	// error
car['goes fast']	// true

๋˜, ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋กœ ๊ฐ์ฒด์˜ ์†์„ฑ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ์‹œ, ์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

const car = {
	ferrari: "cali",
};
const key = "ferrari";

car.key		// undefined
car['key']	// undefined
car[key]	// cali

๋ณ€์ˆ˜์— ์ €์žฅ๋œ ํ‚ค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์‹œ ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

๊ฐ์ฒด์˜ ๋ณต์‚ฌ

: ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ๋Š” ์ฐธ์กฐ ๋ฐฉ์‹์ด ์“ฐ์ธ๋‹ค.

let car = {
	color: 'red',
};
let secondCar = car;

์—ฌ๊ธฐ์„œ secondCar๋Š” ๊ทธ ์ž์ฒด๋กœ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ car์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ฆ‰, car์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.

car๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด secondCar๋„ ์ˆ˜์ •๋œ๋‹ค. ๊ฐ™์€ ์ฃผ์†Œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—.

๋‘ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•ด๋ณด๋ฉด, ๋‘ ๊ฐ์ฒด๊ฐ€ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

console.log(car == secondCar);	// true
console.log(car === secondCar);	// true

 

๋™์ผํ•œ ์ฃผ์†Œ๋ง๊ณ , ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” Object.assign()์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

const car = {
	color: 'red',
}

const secondCar = Object.assign({}, car);

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด car๋ฅผ ์—…๋ฐ์ดํŠธํ•ด๋„ secondCar์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

์ฒซ ๋ฒˆ์งธ ์ธ์ž๋Š” ๋ณต์‚ฌ๋ณธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ์ฒด์ด๊ณ , ๋‘ ๋ฒˆ์งธ ์ธ์ž๋Š” ์›๋ณธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค.

 

๋ฐฐ์—ด

: ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด, ์›์‹œ ์ž๋ฃŒํ˜•์ด ์•„๋‹Œ ๊ฐ์ฒด !!

ํ•ญ๋ชฉ์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ชฉ๋ก๋งŒ ์ €์žฅํ•  ๋•Œ๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ํ•„์š” ์—†์ด ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

const fruit = ['apple', 'banana', 'orange'];

๋ฐฐ์—ด์˜ ๊ฐ ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•  ๋•Œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

fruit[0]
fruit[1]

 

๋ฐฐ์—ด์— ๋Œ€ํ•ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€๋งŒ ์ผ๋‹จ ์‚ดํŽด๋ณด์ž.

const fruit = ['apple', 'banana', 'orange'];

// ๋ฐฐ์—ด์˜ ๋์— ์ƒˆ ๊ฐ’์„ ์ถ”๊ฐ€
fruit.push('pear');

// ๋ฐฐ์—ด์˜ ์‹œ์ž‘์— ์ƒˆ ๊ฐ’์„ ์ถ”๊ฐ€
fruit.unshift('melon');

// ๋ฐฐ์—ด์˜ ๋์—์„œ ๊ฐ’ ํ•˜๋‚˜ ์ œ๊ฑฐ
fruit.pop();

// ๋ฐฐ์—ด์˜ ์‹œ์ž‘์—์„œ ๊ฐ’ ํ•˜๋‚˜ ์ œ๊ฑฐ
fruit.shift();

 

typeof๋กœ ์ž๋ฃŒํ˜• ํ™•์ธํ•˜๊ธฐ

const str = "hello";
typeof(str);	// string

typeof(null);	// object

์•„๋ž˜ null์˜ ์ž๋ฃŒํ˜•์€ object๋กœ ๋‚˜์˜จ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ๊ตฌํ˜„์—์„œ ๋ฐœ์ƒํ•˜๋ˆ„ ๋ฒ„๊ทธ๋ผ๊ณ  ํ•œ๋‹ค.


3. ํ•จ์ˆ˜

ํ•จ์ˆ˜์ •์˜

function greet(name){
	console.log(name);
}
greet("Alberto");

์—ฌ๊ธฐ์„œ, ์ธ์ž์— ์›์‹œ ์ž๋ฃŒํ˜•์ด ์ „๋‹ฌ๋  ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ’์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ „์—ญ์ ์œผ๋กœ ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค.

ํ•˜์ง€๋งŒ, ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ๋Š” ์ฐธ์กฐ ํ˜•ํƒœ๋กœ ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์›๋ณธ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋œ๋‹ค.

ํ•จ์ˆ˜ ํ‘œํ˜„์‹

const greeter = function greet(name){
	console.log(name);
}
greeter("Alberto");

greeter๋ผ๋Š” const์— greet ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ–ˆ๋‹ค.

์ต๋ช… ํ•จ์ˆ˜

์ด ํ•จ์ˆ˜ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

const greeter = function(name) {
	console.log(name);
}
greeter("Alberto");

 

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

ES6์—์„œ ๋„์ž…๋œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

const greeter = (name) => {
	console.log(name);
}
greeter("Alberto");

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ ํŠน์ง•์€ ๋‚˜์ค‘์— ๋‹ค์‹œ ์‚ดํŽด๋ณด์žฅ

 

4. ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„์™€ this ํ‚ค์›Œ๋“œ์˜ ์ดํ•ด

์Šค์ฝ”ํ”„

: ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„๋Š” ๋ณ€์ˆ˜๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์ œ์–ดํ•œ๋‹ค.

์ „์—ญ ์Šค์ฝ”ํ”„ : ์ฝ”๋“œ์˜ ์–ด๋Š ๊ณณ์—์„œ๋“  ์ ‘๊ทผ ๊ฐ€๋Šฅ

๋ธ”๋ก ์Šค์ฝ”ํ”„ : ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ

* ๋ธ”๋ก : ํ•จ์ˆ˜, ๋ฃจํ”„, ์ค‘๊ด„ํ˜ธ๋กœ ๊ตฌ๋ถ„๋˜๋Š” ์˜์—ญ

 

var

๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ, ๋ธ”๋ก ์™ธ๋ถ€์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

let, const

๋ธ”๋ก ์Šค์ฝ”ํ”„ ์™ธ๋ถ€์—์„œ ํ•ด๋‹น ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์œ„์น˜์— ํ•ด๋‹นํ•˜๋Š” ๋ธ”๋ก ์Šค์ฝ”ํ”„ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

this ํ‚ค์›Œ๋“œ

const myCar = {
    color: 'red',
    logColor: function(){
        console.log(this.color);
    }
}

// 1๋ฒˆ
const unboundGetColor = myCar.logColor;
console.log("1", unboundGetColor());

// 2๋ฒˆ
const boundGetColor = unboundGetColor.bind(myCar);
console.log("3", boundGetColor());

1๋ฒˆ์€ ์ „์—ญ์œผ๋กœ ํ˜ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์—ญ ๋ฒ”์œ„์˜ this๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

๋”ฐ๋ผ์„œ, ๊ทธ ๊ฐ’์€ Window ๊ฐ์ฒด๊ฐ€ ๋˜๊ณ , ์ด ๊ฐ์ฒด์—๋Š” color๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๊ฒฐ๊ณผ๋Š” undefined๊ฐ€ ๋œ๋‹ค.

1. .bind()

2๋ฒˆ์€ this์˜ ๊ฐ’์„ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•˜๊ณ ์ž .bind() ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

.bind()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด boundGetColor์˜ this ํ‚ค์›Œ๋“œ๊ฐ€ ๊ด„ํ˜ธ ์•ˆ์˜ ๊ฐ์ฒด์ธ myCar๋ฅผ ์ฐธ์กฐํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

2. .call()

: ์ธ์ˆ˜์˜ ๋ชฉ๋ก์„ ๋ฐ›๋Š”๋‹ค.

function Car(maker, color){
    this.carMaker = maker;
    this.carColor = color;
}

function MyCar(maker, color){
    Car.call(this, maker, color);
    this.age = 5;
}

const myNewCar = new MyCar('bmw', 'red');
console.log(myNewCar.carMaker); // bmw
console.log(myNewCar.carColor); // red

.call() ์— MyCar ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜์—ฌ this.carMaker๊ฐ€ MyCar์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ maker๊ฐ€ ๋˜๋„๋ก ํ–ˆ๋‹ค.

 

3. .apply()

: ํ•˜๋‚˜์˜ ์ธ์ˆ˜ ๋ฐฐ์—ด์„ ๋ฐ›๋Š”๋‹ค.

function Car(maker, color){
    this.carMaker = maker;
    this.carColor = color;
}

function MyCar(maker, color){
    Car.apply(this, [maker, color]);
    this.age = 5;
}

const myNewCar = new MyCar('bmw', 'red');
console.log(myNewCar.carMaker); // bmw
console.log(myNewCar.carColor); // red

.apply() ๋Š” ์ธ์ˆ˜ ๋ชฉ๋ก์ด ๋‹ด๊ธด ๋ฐฐ์—ด์„ ์ธ์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
LIST