π‘ 1. κ°μ²΄ (Object)
- μλ°μ€ν¬λ¦½νΈλ κ°μ²΄ κΈ°λ°μ μ€ν¬λ¦½νΈ μΈμ΄μ΄λ©° μμ νμ μ μ μΈν λͺ¨λ κ°λ€μ κ°μ²΄μ λλ€. (κ·Έλ§νΌ μλ°μ€ν¬λ¦½νΈμμ κ°μ²΄λ λ§€μ° μ€μβ)
- κ°μ²΄λ ν€(key)μ κ°(value)μΌλ‘ ꡬμ±λ νλ‘νΌν°(property)λ€μ λ¬Άμμ λλ€.
- νλ‘νΌν°μ κ°μ λͺ¨λ νμ μ΄ λ€μ΄κ° μ μμ΅λλ€. μλ°μ€ν¬λ¦½νΈμμλ ν¨μλ μΌκΈ κ°μ²΄μ΄λ―λ‘ κ°μΌλ‘ μ·¨κΈν μ μκ³ , νλ‘νΌν°μ κ°μΌλ‘λ μ¬μ©ν μ μμ΅λλ€. μ΄λ ν¨μλ μΌλ° ν¨μμ ꡬλΆνκΈ° μν΄μ λ©μλλΌκ³ λΆλ¦ λλ€. (κ°μ²΄ μμ μλ ν¨μλ λ©μλ)
let person = {
// λ©μλ
sayHello = function(){
console.log('Hello');
}
}
// κ°μ²΄μ λ©μλ νΈμΆ
person.sayHello(); // 'Hello'
// ν¨μ
let hi = function(){
console.log('Hi');
}
// ν¨μ νΈμΆ
hi(); // 'Hi'
- μλ°μ€ν¬λ¦½νΈμ κ°μ²΄λ κ°μ²΄μ§ν₯μ μμμ ꡬννκΈ° μν΄ "νλ‘ν νμ (prototype)"μ΄λΌκ³ λΆλ¦¬λ κ°μ²΄μ νλ‘νΌν°μ λ©μλλ₯Ό μμλ°μ μ μμ΅λλ€. κ°μ²΄λ₯Ό μμ±νλ©΄ μλμ μΌλ‘ ν λΉλμ΄ μμ΅λλ€.
π‘ 2. κ°μ²΄ μμ± λ°©λ²
- κ°μ²΄λ₯Ό μμ±νλ λ°©λ²μ 3κ°μ§ λ°©λ²μ΄ μμ΅λλ€.
π£ 2.1 κ°μ²΄ 리ν°λ΄
- κ°μ₯ μΌλ°μ μΈ λ°©λ²μΌλ‘, λ³μμ λΉ μ€κ΄νΈλ₯Ό ν λΉνλ κ²μ λλ€.
let obj = {};
console.log(typeof(obj)); // "object"
console.log(obj); // {}
//λΉ κ°μ²΄μ νλ‘νΌν° μμ± λ° ν λΉ
obj.a = 1;
console.log(obj); // {a : 1}
obj.b = 2;
console.log(obj); // {a : 1, b : 2}
π£ 2.2 Object μμ±μ ν¨μ
- new μ°μ°μμ Object μμ±μ ν¨μλ₯Ό νΈμΆνμ¬ λΉ κ°μ²΄λ₯Ό μμ±ν μ μμ΅λλ€.
- μμ±μ(contructor) ν¨μλ new ν€μλμ ν¨κ» κ°μ²΄λ₯Ό μμ±νκ³ μ΄κΈ°ννλ ν¨μλ₯Ό λ§ν©λλ€. μμ±μ ν¨μλ₯Ό ν΅ν΄ μμ±λ κ°μ²΄λ₯Ό μΈμ€ν΄μ€(instance)λΌ ν©λλ€.
let obj = new Object();
console.log(typeof(obj)); //"object"
console.log(obj); //{}
// λΉ κ°μ²΄μ νλ‘νΌν° μΆκ°
obj.name = 'bigone';
obj.age = 30;
console.log(obj); // {name : 'bigone', age : 30}
- κ°μ²΄ 리ν°λ΄ λ°©μ(2.1λ°©μ)κ³Ό Object μμ±μ ν¨μ(2.2λ°©μ)λ₯Ό ν΅ν΄ κ°μ²΄λ₯Ό λ§λλ λ°©λ²μ κ°μ λ°©λ²μ λλ€. κ°μ²΄ 리ν°λ΄ λ°©μμΌλ‘ κ°μ²΄ μμ±μ μ§μ ν΄ λμΌλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§ λ΄λΆμμ Object μμ±μ ν¨μλ₯Ό νΈμΆν΄μ μλ‘μ΄ κ°μ²΄λ₯Ό λ§λλλ€. κ²°κ΅ κ°μ²΄ 리ν°λ΄ λ°©μ ({})μ Object μμ±μ ν¨μλ₯Ό μΆμ½ ννν κ²μ λλ€.
π£ 2.3 μμ±μ ν¨μ
- λμΌν νλ‘νΌν°λ₯Ό κ°λ κ°μ²΄λ₯Ό μμ±ν λ μ μ©νκ² μ¬μ©λλ λ°©λ²μ λλ€.
// μμ±μ ν¨μ
function Dog(name, dog_breed, age){
this.name = name;
this.dog_breed = dog_breed,
this.age = age;
this.bark = function(){
console.log('μμ!');
}
}
// μΈμ€ν΄μ€ μμ±
let Dog1 = new Dog('μλ','μν¬μ
ν
리μ΄',3);
let Dog2 = new Dog('κΎΈκΈ°', 'νΌνΌμΈ ', 1);
console.log(Dog1); // Dog {name: 'μλ', dog_breed: 'μν¬μ
ν
리μ΄', age: 3, bark: ƒ}
console.log(Dog2); // Dog {name: 'κΎΈκΈ°', dog_breed: 'νΌνΌμΈ ', age: 1, bark: ƒ}
Dog1.bark() // 'μμ!';
Dog2.bark() // 'μμ!';
- μμ±μ ν¨μ μ΄λ¦μ μΌλ°μ μΌλ‘ λλ¬Έμλ‘ μμν©λλ€. μμ±μ ν¨μμμ μλ €μ£Όλ μ½μμ΄λΌκ³ ν μ μμ΅λλ€.
- thisλ μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν΅λλ€.
- thisμ μ°κ²°(λ°μΈλ©)λμ΄ μλ νλ‘νΌν°μ λ©μλλ μΈλΆμμ μ°Έμ‘°, μ¬μ©μ΄ κ°λ₯ν©λλ€.
- thisμ μ°κ²°λμ΄ μμ§ μμ μμ±μ μμ λ³μλ€μ μΈλΆμμ μ°Έμ‘°, μ¬μ©μ΄ λΆκ°λ₯ν©λλ€.
// μμ±μ ν¨μ
function Dog(name, dog_breed, age){
this.name = name;
this.dog_breed = dog_breed,
this.age = age;
this.bark = function(){
console.log('μμ!');
}
let eat = 'κ°μλ¨ΉκΈ°';
}
let dog1 = new Dog('κΎΈκΈ°', 'νΌνΌμΈ ', 1);
// thisλ‘ μ°κ²°ν νλ‘νΌν°
console.log(dog1.name); // 'κΎΈκΈ°'
// Dog μμ±μ μμμλ§ μ°λ λ³μ
console.log(dog1.eat);// undefined
- nameμ΄λΌλ νλ‘νΌν°λ thisμ μ°κ²°λμ΄ μμΌλ―λ‘ μΈλΆμμ μ¬μ©μ΄ κ°λ₯νμ§λ§, eatλΌλ νλ‘νΌν°λ thisμ μ°κ²°μ΄ λμ΄ μμ§ μμΌλ―λ‘ μΈλΆμμ μ¬μ©μ΄ λΆκ°λ₯ν©λλ€.
π‘ 3. νλ‘νΌν°
- νλ‘νΌν°λ κ°μ²΄μ λ€μ΄μλ ν€(key)-κ°(value)μ ν μμΌλ‘ μ΄λ£¨μ΄μ§ λ³μλ₯Ό μλ―Έν©λλ€.
π£ 3.1 νλ‘νΌν° ν€
- νλ‘νΌν° ν€λ μΌλ°μ μΌλ‘ λ¬Έμμ΄(λΉ λ¬Έμμ΄ ν¬ν¨)μ μ§μ ν©λλ€. νλ‘νΌν° ν€μ λ¬Έμμ΄μ΄λ symbol κ° μ΄μΈμ κ°μ μ§μ νλ©΄ μ묡μ μΌλ‘ λ¬Έμμ΄λ‘ λ³νλ©λλ€.
- νλ‘νΌν° ν€λ λ¬Έμμ΄μ΄λ―λ‘ λ°μ΄ν('', "")λ₯Ό μ¬μ©ν©λλ€. λ€λ§ μλ°μ€ν¬λ¦½μμ μ¬μ© κ°λ₯ν μ ν¨ν μ΄λ¦μΈ κ²½μ°μλ λ°μ΄νλ₯Ό μλ΅ν μ μμ΅λλ€. λ°λλ‘ μ¬μ© κ°λ₯νμ§ μλ μ΄λ¦μΈ κ²½μ° λ°μ΄νλ₯Ό λ°λμ μ¬μ©ν΄μΌ ν©λλ€.
let user = {
id : 'bigone',
'first-name' : 'κΈΈλ', // λ°μ΄νκ° μμΌλ©΄ first - name μΌλ‘ μΈμμ νκΈ° λλ¬Έμ μ ν¨ν μ΄λ¦μ΄ μλ
'last-name' : 'ν',
gender : 'male',
function : 10 // μ¬μ©μ΄ κ°λ₯νμ§λ§ μμ½μ΄λ μ¬μ©νμ§ μλ κ²μ΄ μ’λ€ (μμ½μ΄ : function, for, if ...)
}
- μ μ½λλ₯Ό 보면 firt-nameκ³Ό last-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
π£ 3.2 νλ‘νΌν° κ° μ½κΈ°
- κ°μ²΄μ νλ‘νΌν° κ°μ μ κ·ΌνκΈ° μν΄μλ νλ‘νΌν°μ ν€λ₯Ό μ΄μ©ν©λλ€. κ·Έλ¦¬κ³ λ§μΉ¨ν(.) νκΈ°λ²κ³Ό λκ΄νΈ([]) νκΈ°λ²μ μ¬μ©ν©λλ€.
let user = {
id : 'bigone',
'first-name' : 'κΈΈλ',
'last-name' : 'ν',
gender : 'male',
1 : 10
}
console.log(user.id) // 'bigone'
console.log(user[id]) // id is not defined - μλ¬ λ°μ
console.log(user['id']) // 'bigone'
console.log(user.first-name) // NaN - μλ¬ λ°μ
console.log(user[first-name]) // first is not defined - μλ¬ λ°μ
console.log(user['fist-name']) // 'κΈΈλ'
console.log(user.1) //after argument list - μλ¬ λ°μ
console.log(user[1]) // 10 - μ묡μ νμ
λ³ν 1 -> '1'
console.log(user['1']) // 10
console.log(user.name) // undefined - κ°μ²΄μ μλ νλ‘νΌν° νΈμΆμ undefined λ°ν
- νλ‘νΌν° ν€κ° μ ν¨ν μλ°μ€ν¬λ¦½νΈ μ΄λ¦μ΄κ³ μμ½μ΄κ° μλ κ²½μ° λ§μΉ¨ν, λκ΄νΈ νκΈ°λ²μΌλ‘ κ°μ κ°μ Έμ¬ μ μμ΅λλ€. (id, gender)
- νλ‘νΌν° ν€κ° μ ν¨ν μλ°μ€ν¬λ¦½νΈ μ΄λ¦μ΄ μλκ±°λ μμ½μ΄μΈ κ²½μ° νλ‘νΌν° κ°μ λκ΄νΈ νκΈ°λ²μΌλ‘ κ°μ κ°μ ΈμμΌ ν©λλ€. λκ΄νΈ μμ μ΄λ¦μ 무쑰건 λ¬Έμμ΄μ΄μ΄μΌ ν©λλ€. (first-name, last-name, 1)
π£ 3.3 νλ‘νΌν° κ° κ°±μ
let user = {
id : 'bigone',
'first-name' : 'κΈΈλ',
'last-name' : 'ν',
gender : 'male',
1 : 10
}
console.log(user); // {1: 10, id: 'bigone', first-name: 'κΈΈλ', last-name: 'ν', gender: 'male'}
user.id = 'smallone';
user['last-name'] = 'κΉ';
console.log(user); // {1: 10, id: 'smallone', first-name: 'κΈΈλ', last-name: 'κΉ', gender: 'male'}
- νλ‘νΌν° κ°μ νΈμΆν΄μ μλ‘μ΄ κ°μ ν λΉνλ©΄ κ°±μ λ©λλ€.
π£ 3.4 νλ‘νΌν° λμ μμ±
let user = {
id : 'bigone',
'first-name' : 'κΈΈλ',
'last-name' : 'ν',
gender : 'male',
1 : 10
}
console.log(user); // {1: 10, id: 'bigone', first-name: 'κΈΈλ', last-name: 'ν', gender: 'male'}
// userμ ageλΌλ νλ‘νΌν° λμ μμ±
user.age = 30;
console.log(user); // {1: 10, id: 'bigone', first-name: 'κΈΈλ', last-name: 'ν', gender: 'male', age: 30}
π£ 3.5 νλ‘νΌν° μμ
let user = {
id : 'bigone',
'first-name' : 'κΈΈλ',
'last-name' : 'ν',
gender : 'male',
1 : 10
}
console.log(user); // {1: 10, id: 'bigone', first-name: 'κΈΈλ', last-name: 'ν', gender: 'male'}
// 1, genderλΌλ νλ‘νΌν° μμ
delete user['1'];
delete user.gender;
console.log(user); // {id: 'bigone', first-name: 'κΈΈλ', last-name: 'ν'}
- delete μ°μ°μλ₯Ό μ¬μ©νμ¬ νλ‘νΌν°λ₯Ό μμ ν μ μμ΅λλ€.
π μ 리
- κ°μ²΄λ νλ‘νΌν°λ€μ λ¬Άμμ΄λ€.
- νλ‘νΌν°λ ν€(key)-κ°(value)μ΄ ν μμ μ΄λ£¨λ λ³μμ΄λ€.
- νλ‘νΌν° ν€λ λ¬Έμμ΄μ΄μ΄μΌ νλ€.
- νλ‘νΌν° κ°μ μλ°μ€ν¬λ¦½νΈμμ μ¬μ©ν μ μλ λͺ¨λ λ°μ΄ν° νμ μ μ¬μ©ν μ μλ€.
- νλ‘νΌν° κ° νΈμΆμ λ§μΉ¨ν(.) νκΈ°λ²κ³Ό λκ΄νΈ([]) νκΈ°λ²μ΄ μλ€.
- λκ΄νΈ νκΈ°λ²μμ λκ΄νΈ μμλ 무쑰건 λ¬Έμμ΄μ΄ λ€μ΄μμΌ νλ€.
- νλ‘νΌν° κ° λ³κ²½μ νλ‘νΌν° κ°μ νΈμΆ ν μλ‘μ΄ κ°μ ν λΉν΄μ£Όλ©΄ λλ€.
- νλ‘νΌν° λμ μμ±μ κ°μ²΄. μλ‘μ΄ νλ‘νΌν° = κ°μΌλ‘ λ§λ€λ©΄ λλ€.
- νλ‘νΌν° μμ λ delete μ°μ°μλ₯Ό μ¬μ©ν΄μ μμ νλ©΄ λλ€.
κΈ΄ κΈ μ½μ΄μ£Όμ
μ κ°μ¬ν©λλ€ :)
νλ¦° λ΄μ©μ΄ μκ±°λ, λ§λΆμΌ λ΄μ©μ΄ μλ€λ©΄ μΈμ λ μ§ λκΈ λ¬μμ£ΌμΈμ!
μ κΈμ΄ μ‘°κΈμ΄λλ§ μ½μΌμ λΆλ€μκ² λμμ΄ λλλ‘ λ
Έλ ₯νκ² μ΅λλ€
λ€μ νΈμ 봬μ~
'Front-End > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλ°μ€λ¦½νΈ(JavaScript )] 11. ν¨μ νλ‘νΌν° (Function Property) (0) | 2022.02.10 |
---|---|
[μλ°μ€λ¦½νΈ(JavaScript )] 10. ν¨μ (Function) (0) | 2022.02.04 |
[JavaScript] 08. νμ λ³ν (0) | 2022.01.27 |
[JavaScript] 07. λ°λ³΅λ¬Έ (0) | 2022.01.26 |
[JavaScript] 06. λΈλ‘λ¬Έ & 쑰건문 (0) | 2022.01.25 |