October 28, 2020
https://dev-seolleung2.netlify.app/development/OOP-part2/
λ°λ‘ μ κΈμμ λ§λ μλμ₯μ λ§ κ·Έλλ‘ κ°λ΄ μ곡μ μλ₯΄λ©μ€ λ€.
νλνλ μλμ₯μ name, record κ° λμ§ μ μ±μ€λ½κ² λ§λ€μλ€. μλμ₯ νλλΉ κΈ°λ³Έ 500λ§μμ νΈκ°νλ€.
let cutiehany = {
name: 'hany kim',
first_record: 10, //첫 λ²μ§Έ κ²μμ μ€μ½μ΄
second_record: 20, //λ λ²μ§Έ κ²μμ μ€μ½μ΄
sum: function() {
return this.first_record + this.second_record;
},
}
console.log("κ²μμ€μ½μ΄μ ν©κ³ :" , cutiehany.sum())
κ²μμ€μ½μ΄μ ν©κ³ : 30
κ²μ λν νλ μ΄ν μ μ λ₯Ό μΌμΌμ΄ 1μ΅κ° λ§λ€ μ μμκΉ? ν μ μλ€.
κ·Έλ°λ° κΈ°κ» λ€ λ§λ€μ΄ λ¨λλ° νλ μ΄ν κ²μμ μΈλ²μ§Έ κΈ°λ‘ (third_record) μ μΆκ°νλΌκ³ νλ€λ©΄,
κ³ μλ μ΄λ° κ°κ³ μμ΄ μλκ±°λ€.. 1μ΅κ°μ κ°μ²΄ μ κ°κ° μΌμΌμ΄ λΆλ΄λΆλ΄ μΆκ°ν΄ μ€μΌ νκ³ return λ¬Έλ μλ΄μΌ νλκΉ λ§μ΄λ€.
λ°λ‘ μ΄λ° λΆνΈν¨ λλ¬Έμ μ μ μ 보λ₯Ό μ°μ΄λ΄λ 곡μ₯μ λ§λ€κ±°κ³ ,
κ·Έλ¦¬κ³ κ·Έ 곡μ₯μ ν΅ν΄ μλμ₯ (κ°μ²΄) μ λλ μμ°ν κ±°λ€.
let dateInfo = new Date('2020-10-28')
dateInfo
Wed Oct 28 2020 09:00:00 GMT+0900 (λνλ―Όκ΅ νμ€μ)
dateInfo.getFullYear()
2020
dateInfo.getDay()
3 // μμμΌμ μλ―Έ
νμ¬λ μ§λ₯Ό νλΌλ―Έν°λ‘ λ΄μμ νμ¬ λ μ§λ₯Ό λ°μ΄ν°, μνλ‘ κ°μ§κ³ μλ κ°μ²΄κ° λ§λ€μ΄μ Έ dateInfo μ λ΄κ²Όλ€.
맨 μμ κ°μ²΄μ λ€λ₯΄κ² κ°μ²΄μ μ€κ³λκ° λ ΈμΆλμ§ μμλ€.
μ΄λ₯Ό ν΅ν΄ new λ₯Ό λΆμμ λ κ°μ²΄λ₯Ό λ§λ€μ΄μ λ¦¬ν΄ ν΄ μ£Όκ³ μλ κ² κ°λ€.
μκΉ λ§λ€μλ κ°λ΄ μ곡μ κ°μ²΄λ μ λ°μμΌλ‘ 미리 곡μ₯μ λ§λ€μ΄ λκ³ μμ°νλ€λ©΄ μ½λλ κΉ¨λν΄μ§κ³ μ΄λ°κΈ 곡μ₯μ₯μ λ³λμΌλ‘ 곡μ₯ λΌμΈλ³κ²½μ ν΅ν΄, λ§λ€μ΄μ§λ λͺ¨λ κ°μ²΄κ° μλμΌλ‘ λ€λ₯΄κ² μμ±λ κ²μ΄λ€.
μμ λ§λ let dateInfo = new Date(β2020-10-28β) λ₯Ό 보면 λ§μΉ ν¨μλ₯Ό νΈμΆν λͺ¨μ κ°λ€.
μ€μ ν¨μκ° λ§λ€.
κ·Έλ κΈ° λλ¬Έμ 곡μ₯μ νλ² λ§λ€μ΄ λ³Έλ€.
function UserInfo() { // UserInfo() λΌλ ν¨μλ₯Ό ν΅ν΄ λ§λ€μ΄μ§ κ°μ²΄, this!
this.name = 'hany kim' // κ·Έλμ μμ±λ§λ€ this λ₯Ό μμ λΆμ΄λ κ±°λ€.
this.first_record = 10;
this.second_record = 20;
this.third_record = 30;
this.sum = function() {
return this.first_record + this.second_record + this.third_record;
}
}
console.log("μ μ μ 보 :", UserInfo());
μ μ μ 보 : undefined
μ μ μ λ³΄κ° undefined κ° λ¬λ€. μ무 κ²λ 리ν΄νλ κ²μ΄ μλ€.
UserInfo() μμ new λΌλ ν€μλλ₯Ό λΆμ΄λ©΄ μμ ν λ€λ₯Έ μ‘΄μ¬κ° λλ€. UserInfo λΌλ κ°μ²΄κ° λ± λ§λ€μ΄ μ§λ€.
new κ° λΆμ§ μμ UserInfo() λ κ·Έλ₯ ν¨μμ΄μ§λ§
new κ° λΆμ new UserInfo() λ κ°μ²΄λ₯Ό μμ±νλ βμμ±μβ (Constructor) κ° λλ€.
μμ±μ ν¨μλΌκ³ λΆλ₯΄κΈ°λ νλ€.
console.log("μ μ μ 보 :", new UserInfo());
μ μ μ 보 :
UserInfo {name: "hany kim", first_record: 10, second_record: 20, third_record: 30, sum: Ζ}
first_record: 10
name: "hany kim"
second_record: 20
sum: Ζ ()
third_record: 30
__proto__: Object
μ΄μ μ μ λ₯Ό λκ° μμ°ν΄ 보μ.
let seolleung2 = new UserInfo(); let insoozzang = new UserInfo();
μΌλ ? λ μ μ μ μ μ ν©κ³κ° κ°κ² λμ¨λ€?
seolleung2.sum() 60 insoozzang.sum() 60
constructor λ΄λΆμ μΌλ‘ λμΌν μνμ΄λ―λ‘ μμ±μ ν¨μ λ΄ μΈμμ λ€λ₯Έ μ 보λ₯Ό νμ 보λ΄μΌ νλ€.
let seolleung2 = new UserInfo('seolleung2', 10, 20, 30)
let insoozzang = new UserInfo('insoozzang', 10, 10, 10)
κ·Έλ¦¬κ³ κ³΅μ₯μ constructor λ μμ ν΄ μ€μΌ νλ€.
function UserInfo(name, first, second, third) {
this.name = name
this.first_record = first
this.second_record = second
this.third_record = third
this.sum = function() {
return this.first_record + this.second_record + this.third_record
}
}
μμ ν¨μλ constructor function μ΄λΌ λΆλ₯΄κΈ°λ νλ€.
κ·Έλ¦¬κ³ μ μμ ν©κ³κ° λ€λ₯΄κ² λμ€λ κ²μ νμΈν΄ λ³Ό μ μλ€.
seolleung2.sum() 60 insoozzang.sum() 30
λκ° μ»¨μ€νΈλν° ν¨μλ λ§λ€μ΄μ§ κ°μ²΄μ μμ±μ μ μνλ©΄μ μ΄κΈ°μ κ°μ μ§μ ν΄ λλ ννμΈ κ² κ°λ€.
μ곡μ μλ₯΄λ©μ€ μ₯μΈμ λ§λ€ λλ§λ€ κ°μ²΄λ₯Ό λ€μ μ§μ ν΄ μ€μΌ νλλ° constructor function μ λ§λ€λ©΄ μμ new ν€μλλ₯Ό μ¬μ©ν¨μΌλ‘μ¨ μ€νν λλ§λ€ κ°μ²΄κ° μμ°λλ€.
κ·Έλ¦¬κ³ μμ±μ ν¨μμ λ΄μ©μ λ°κΎΈλ©΄ (μμ°λΌμΈμ λ°κΎΈλ©΄) κ·Έ ν¨μμ μν΄ λ§λ€μ΄μ§λ λͺ¨λ κ°μ²΄κ° ν λ²μ λ°λμ΄ μμ°λλ νλ°μ μΈ? ν¨κ³Όλ₯Ό μ»κ² λλ€.