ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ECMA script๋ฅผ ์ค์ํ๋ฉด์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณ๋๋ก ์ง์ํ๋ Web API ๋ฑ์ ํฌํจํ ๊ฐ๋
- ๋ธ๋ผ์ฐ์ => ๋ ๋๋ง ๋ชฉ์
- Node.js => ์คํํ๊ฒฝ ์ ๊ณต ๋ชฉ์
- ํ๋์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ
- ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๋ณํ๊ธฐ ์ํ ์ด๋ฆ (์๋ณ์์ ์ด๋ฆ)
- ์ ์ธ ๋จ๊ณ
- ์ด๊ธฐํ ๋จ๊ณ
๋ณ์ ์ ์ธ๋ถ๋ถ์ JS ๋์์ ์์ด์ ๋ฐํ์ ์คํ ์ ์ธ ์์ค์ฝ๋ ํ๊ฐ ๊ณผ์ ์์ ์คํ๋์ด ํ์ค์ฉ ํด์ํ๋ ๋ฐํ์๊ณผ ๋ค๋ฅด๊ฒ ํ๋ฒ์ ์์ ์ ์ธ๋๋ค.
์ด๋ค ๊ฐ์ ๊ตฌ๋ณํด์ ์๋ณํ ์ ์๋ ๊ณ ์ ํ ์ด๋ฆ
์ปดํ์ผ๋ฌ | ์ธํฐํ๋ฆฌํฐ |
---|---|
์ฝ๋ ์คํ ์ ์์ค์ฝ๋ ์ ์ฒด๋ฅผ ๋ณํ ํ ์คํ | ๋ฐํ์์ ํ์ค ์ฉ ์ฝ๋ ๋ณํ ํ ์คํ |
์คํ ํ์ผ ์์ฑ | ์คํ ํ์ผ ์์ฑX |
์ปดํ์ผ ๋จ๊ณ / ์คํ ๋จ๊ณ ๋ถ๋ฆฌ | ๋ถ๋ฆฌ๋์ง์์ ํ์ค์ฉ ๋ณํ ํ ์คํ |
๋ถ๋ฆฌ๋ก ์ธํ ์ฝ๋ ์คํ์๋ ๋น ๋ฅด๋ค | ์๋ค๊ฐ๋ค ๋ฐ๋ณต ์ํ์ผ๋ก ์ฝ๋ ์คํ ์๋๊ฐ ๋๋ฆฌ๋ค |
1 ๋จ๊ณ: ์คํ ์ปจํ ์คํธ ์์ฑํ๊ณ , ๋ณ์ ๋ฑ์ ๋ฑ๋กํ๋ ๋จ๊ณ
(์์ค์ฝ๋ ํ๊ฐ ๊ณผ์ )
2 ๋จ๊ณ: ์์ค ์ฝ๋๋ฅผ ํ ์ค์ฉ ์คํํ๋ ๋จ๊ณ
(๋ฐํ์ ํ๊ฒฝ)
์์ํ์ ์ ๊ฒฝ์ฐ ์ฌํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ์ด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณณ์ด ๋ฐ๋์ง์๊ณ ์๋ก์ด ์ฃผ์์ ์์น์ ์๊ธด๋ค.
ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฒ์ฌํ์ฌ ์ฌ์ฉํ์ง์๋(์ด๋ค ์๋ณ์๋ ์ฐธ์กฐํ์ง์๋) ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ ๊ธฐ๋ฅ์ด๋ค.
- ๋งค๋์ง๋ ์ธ์ด : ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น ๋ฐ ํด์ ๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ ์ดํ์ง์์ => JS
- ์ธ๋งค๋์ง๋ ์ธ์ด : ๊ฐ๋ฐ์๊ฐ ๋ช ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น / ํด์ => C์ธ์ด
- ํ๋กํผํฐ : ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฐ
1) ํ๋กํผํฐ ํค
2) ํ๋กํผํฐ ๊ฐ- ๋ฉ์๋ : ํ๋กํผํฐ๋ฅผ ์ฐธ์กฐํ๊ณ ์กฐ์ํ๋ ๋์
- ๊ฐ์ฒด ๋ฆฌํฐ๋ด
- Object ์์ฑ์ ํจ์
- ์์ฑ์ ํจ์
- Object.create ๋ฉ์๋
- ํด๋์ค
const user1 = {
name: "๋ณด๋ผ",
isAdmin: false,
};
function User2(name) {
this.name = name;
this.isAdmin = false;
}
let user2 = new User2("๋ณด๋ผ");
let user3 = new Object();
user3.name = "๋ณด๋ผ";
user3.isAdmin = false;
let user4 = Object.create(null);
user4.name = "๋ณด๋ผ";
user4.isAdmin = false;
class User5 {
constructor(name, isAdmin) {
this.name = name;
this.isAdmin = isAdmin;
}
}
const user5 = new User5("๋ณด๋ผ", false);
console.log(user1);
console.log(user2);
console.log(user3);
console.log(user4);
console.log(user5);
๋ชจ๋ ๊ฐ์ name๊ณผ isAdmin์ ํฌํจํ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ง๋ค.
์๋ณ์ ๋ค์ด๋ฐ ๊ท์น์ ๋ฐ๋ฅด๋ฉด์ ๋ฐ์ดํ๊ฐ ํ์์์ผ๋
์ด๋ฅผ ๋ฐ๋ฅด์ง์์ผ๋ฉด ๋ฐ์ดํ๊ฐ ํ์ํ๋ค ex)last-name
- ๋ง์นจํ ํ๊ธฐ๋ฒ (
person.name
)- ๋๊ดํธ ํ๊ธฐ๋ฒ (
person['name']
)
- Node.js : name์ด ์ด๋์๋ ์์ด์ ReferenceError
- ๋ธ๋ผ์ฐ์ ํ๊ฒฝ : name์ด๋ผ๋ ์ ์ญ๋ณ์๊ฐ ์๋ฌต์ ์ผ๋ก ์กด์ฌํ์ฌ NaN
let x = 1, y = 2;
const obj = { x, y } // {x:x,y:y} => {x:1,y:2}
console.log(obj); // {x:1,y:2}
let obj = {
name: "Lee",
sayHi: function () {
console.log(this, "hi");
},
sayHi1: () => {
console.log(this, "hi1");
},
sayHi2() {
console.log(this, "hi2");
},
};
obj.sayHi();
obj.sayHi1();
obj.sayHi2();
ํ์ดํํจ์๋ฅผ ์ฌ์ฉํ
sayHi1()
๋ง ์ ์์ ์ธ obj this๋ฅผ ๊ฐ๋ฅดํค์ง ์๋๋ค
- ๋ถ๋ณ์ฑ ( ๋ถ๋ณ์ฑ O / ๋ถ๋ณ์ฑ X )
- ๋ณ์์ ์ ์ฅ ( ์ค์ ๊ฐ / ์ฐธ์กฐ ๊ฐ )
- ๋ณต์ฌ ( ์์ ๊ฐ์ ๋ณต์ฌ / ์ฐธ์กฐ ๊ฐ์ ๋ณต์ฌ )
์์๊ฐ์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ๋ค
=> ๋ณ์ ๊ฐ์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค ( = ๋ณ์๊ฐ์ ์ฌํ ๋น์ด ๊ฐ๋ฅํ๋ค )
๋ฌธ์์ด์ ๋ฐฐ์ดํํ ์ ๊ทผ์ ๊ฐ๋ฅํ๋ค
๋ฌธ์์ด์ ๋ฐฐ์ดํํ๋ก ๋ฌธ์๋ณ๊ฒฝ์ ๋ถ๊ฐ๋ฅํ๋ค
๋ฌธ์ ๋ณ๊ฒฝ ์์๋ ์๋ก์ด ๋ฌธ์(์ด)๋ก ์ฌํ ๋น ํ์ํ๋ค
์ฌ์ค์ ์ ํํ ๋งํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ์๋ ๊ฐ์ ์ํ ์ ๋ฌ ๋ฐ์ ์๋ค
๋จ์ง, (์์) ๊ฐ์ ์ํ ์ ๋ฌ์ธ์ง (์ฐธ์กฐ) ๊ฐ์ ์ํ ์ ๋ฌ์ธ์ง๊ฐ ์ค์ํ ๋ฟ์ด๋ค.
์ฆ, ์ ๋ฆฌํ์๋ฉด ์ฐ๋ฆฌ๊ฐ ํ์์ ์ฐ๋ ๊ฐ์ ์ ๋ฌ๊ณผ ์ฐธ์กฐ์ ์ ๋ฌ์
์ฌ์ค ์์๊ฐ์ ์ ๋ฌ๊ณผ ์ฐธ์กฐ๊ฐ์ ์ ๋ฌ๋ก ์ดํดํ๊ณ
์ค์ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ฐ์ ์ํ ์ ๋ฌ๋ง์ด ์กด์ฌํ๋ค๊ณ ์๊ฐํ์
- ๊ฐ์ฒด๋ฅผ ํ ๋นํ ๋ณ์ ๋น๊ต : ์ฐธ์กฐ ๊ฐ์ ๋น๊ต
- ์์ ๊ฐ์ ํ ๋นํ ๋ณ์ : ์์ ๊ฐ์ ๋น๊ต
let p = { name : 'L'}
let q = { name : 'L'}
console.log(p === q); // 1. false
console.log(p.name === q.name); // 2. true