μμμ ν΅ν΄μ μμ μ νΉμ±μ μ μ§νκ³ λ€λ₯Έ ν΄λμ€μ νΉμ±μ μ¬μ©ν μ μλ€.
μμμ ꡬνν μ μκ² νλ λ¬Έλ²μ΄λ€.
𧩠class μμ ν΄λμ€ extends λΆλͺ¨ ν΄λμ€
// μνΌ ν΄λμ€λ₯Ό μμ±νλ€.
class SuperClass {
log1() {
console.log("SuperClass");
}
}
// extendsλ₯Ό μ΄μ©νμ¬ μμμ ꡬννλ€.
class SubClass extends SuperClass {
log2() {
console.log("SubClass");
}
}
// μΈμ€ν΄μ€ μμ±
const subClass = new SubClass();
// κ²°κ³Ό : SuperClass
subClass.log1();
// κ²°κ³Ό : SubClass
subClass.log2();
π₯ μνΌ ν΄λμ€μ λ©μλλ₯Ό μλΈ ν΄λμ€κ° μ¬μ©ν μ μλ€.
𧩠λμ μμ
let isChecked = true;
class SuperClass1 {
log1() {
console.log("SuperClass1");
}
}
class SuperClass2 {
log1() {
console.log("SuperClass2");
}
}
// 3ν μ°μ°μλ₯Ό μ¬μ©ν΄μ μμλ°μ ν΄λμ€λ₯Ό κ²°μ νλ€.
class SubClass extends (isChecked ? SuperClass1 : SuperClass2) {
log2() {
console.log("SubClass");
}
}
const subClass = new SubClass();
// κ²°κ³Ό : SuperClass1
subClass.log1();
let isChecked = true;
class SuperClass1 {
log1() {
console.log("SuperClass1");
}
}
class SuperClass2 {
log1() {
console.log("SuperClass2");
}
}
// classκ° μμλ°κΈ° μ΄μ μ isChecked μνλ‘ μμλ°μ ν΄λμ€κ° κ²°μ λλ€.
isChecked = false;
class SubClass extends (isChecked ? SuperClass1 : SuperClass2) {
log2() {
console.log("SubClass");
}
}
// κ²°κ³Ό : SuperClass2
const subClass = new SubClass();
subClass.log1();
π₯ μμλ°κΈ° μ μ μνλ₯Ό νμΈνμ¬ ν΄λμ€λ₯Ό λμ μΌλ‘ μμμ μ§μ νλ€.
μμμ λ°μ μνΌ ν΄λμ€μ νλ‘νΌν°λ₯Ό μ¬μ©νκ±°λ ν΄λμ€μ λ©μλλ₯Ό μλΈ ν΄λμ€μ μμμ μ¬μ©μ΄ κ°λ₯νκ² λ§λλ λ¬Έλ²μ΄λ€.
𧩠super ν¨μ νΈμΆ
// νμ ν΄λμ€λ₯Ό μμ±
class Student {
constructor(name, age, classCode) {
this.name = name;
this.age = age;
this.classCode = classCode;
console.log(this.name, this.age, this.classCode);
}
}
// κ΅μ ν΄λμ€λ₯Ό μμ±
class Professor {
constructor(name, age, classScale) {
this.name = name;
this.age = age;
this.classScale = classScale;
console.log(this.name, this.age, this.classScale);
}
}
// κ²°κ³Ό : Kim 23 A12
const student = new Student("Kim", 23, 'A12');
// κ²°κ³Ό : Lee 41 30
const professor = new Professor("Lee", 41, 30);
ν΄λμ€λ₯Ό 2κ° μμ±νμ¬ μΈμ€ν΄μ€λ₯Ό λ§λ€λ©΄ μ€λ³΅λ μ λ³΄κ° 2λ² μ μΈλλ€.
// κ°κ°μ 곡μ νλ νΉμ±μΈ nameκ³Ό ageλ₯Ό κ΄λ¦¬νκΈ° μν νκ΅ ν΄λμ€λ₯Ό μμ±
class School {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
// νκ΅ ν΄λμ€λ₯Ό μμ λ°μμ μ¬μ©νλ€.
class Student extends School {
constructor(name, age, classCode) {
// superλ₯Ό ν¨μλ‘ νΈμΆνμ¬ μ¬μ©νλ€.
super(name, age);
this.classCode = classCode;
console.log(this.name, this.age, this.classCode);
}
}
// κ΅μ ν΄λμ€λ₯Ό μμ λ°μμ μ¬μ©νλ€.
class Professor extends School {
constructor(name, age, classScale) {
// superλ₯Ό ν¨μλ‘ νΈμΆνμ¬ μ¬μ©νλ€.
super(name, age);
this.classScale = classScale;
console.log(this.name, this.age, this.classScale);
}
}
// κ²°κ³Ό : Kim 23 A12
const student = new Student("Kim", 23, 'A12');
// κ²°κ³Ό : Lee 41 30
const professor = new Professor("Lee", 41, 30);
𧩠μ€λ²λΌμ΄λ©
μμμ λ°μ μλΈ ν΄λμ€μ λ©μλλ νλ‘νΌν°κ° λΆλͺ¨ ν΄λμ€μ μ΄λ¦κ³Ό κ²ΉμΉλ©΄ μλΈ ν΄λμ€μ λ©μλμ νλ‘νΌν°κ° νΈμΆλλ€.
class School {
constructor(name, age) {
this.name = name;
this.age = age;
}
info() {
console.log(`μ΄λ¦μ ${this.name} μ
λλ€.`);
console.log(`λμ΄λ ${this.age} μ
λλ€.`);
}
}
class Student extends School {
constructor(name, age, classCode) {
super(name, age);
this.classCode = classCode;
}
info() {
console.log(`κ°μμ€μ κ³ μ μ½λλ ${this.classCode} μ
λλ€.`);
}
}
class Professor extends School {
constructor(name, age, classScale) {
super(name, age);
this.classScale = classScale;
}
info() {
console.log(`κ°μμ€μ μ΄ νμ μλ ${this.classScale} μ
λλ€.`);
}
}
const student = new Student("Kim", 23, 'A12');
const professor = new Professor("Lee", 41, 30);
// κ²°κ³Ό : κ°μμ€μ κ³ μ μ½λλ A12 μ
λλ€.
student.info();
// κ²°κ³Ό : κ°μμ€μ μ΄ νμ μλ 30 μ
λλ€.
professor.info();
class School {
constructor(name, age) {
this.name = name;
this.age = age;
}
info() {
console.log(`μ΄λ¦μ ${this.name} μ
λλ€.`);
console.log(`λμ΄λ ${this.age} μ
λλ€.`);
}
}
class Student extends School {
constructor(name, age, classCode) {
super(name, age);
this.classCode = classCode;
}
info() {
// superλ₯Ό μ°Έμ‘°ν΄μ νκ΅ ν΄λμ€μ info λ©μλλ₯Ό κ°μ Έμ μ¬μ©νλ€.
super.info();
console.log(`κ°μμ€μ κ³ μ μ½λλ ${this.classCode} μ
λλ€.`);
}
}
class Professor extends School {
constructor(name, age, classScale) {
super(name, age);
this.classScale = classScale;
}
info() {
// superλ₯Ό μ°Έμ‘°ν΄μ νκ΅ ν΄λμ€μ info λ©μλλ₯Ό κ°μ Έμ μ¬μ©νλ€.
super.info();
console.log(`κ°μμ€μ μ΄ νμ μλ ${this.classScale} μ
λλ€.`);
}
}
const student = new Student("Kim", 23, 'A12');
const professor = new Professor("Lee", 41, 30);
/*
κ²°κ³Ό :
μ΄λ¦μ Kim μ
λλ€.
λμ΄λ 23 μ
λλ€.
κ°μμ€μ κ³ μ μ½λλ A12 μ
λλ€.
*/
student.info();
/*
μ΄λ¦μ Lee μ
λλ€.
λμ΄λ 41 μ
λλ€.
κ°μμ€μ μ΄ νμ μλ 30 μ
λλ€.
*/
professor.info();
super μ°Έμ‘°λ₯Ό μ¬μ©ν΄μ μ€λ²λΌμ΄λ© λ¬Έμ λ₯Ό ν΄κ²°νκ³ κ³΅ν΅μ μΈ λ©μλμ λ¬Έμ λ ν΄κ²°νλ©° μΆκ°ν΄μ μ¬μ©μ΄ κ°λ₯νκ² λλ€.
π₯ μλ°μ€ν¬λ¦½νΈλ μ€λ²λΌμ΄λ©μ μ§μνμ§λ§ μ€λ²λ‘λλ μ§μνμ§ μλλ€. νμ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©ν΄μ κ°λ₯νλ€.
λΉνΈμΈ μ€λΈμ νΈ μμ λΉνΈμΈ μ€λΈμ νΈλ₯Ό μμ λ°μΌλ©΄ λΉνΈμΈ λ©μλμ νλ‘νΌν°λ₯Ό μ¬μ©ν μ μλ€.
// (1)
class NewArray extends Array {
// (2)
divide(n) {
const result = [];
for(let i = 0, j = this.length; i < j; i += n) {
const item = this.slice(i, i + n);
result.push(item);
}
return result;
}
}
// (3)
const newArray = new NewArray(1,2,3,4,5,6,7,8);
// (4)
const divideArr = newArray.divide(3);
// (5)
console.log(divideArr);
π μ½λ λμ κ³Όμ
β λΉνΈμΈ μ€λΈμ νΈμΈ Arrayλ₯Ό μμ λ°λλ€.
β‘ 1μ°¨μ λ°°μ΄μ μμλ₯Ό nλ§νΌμ μμλ‘ λλκ³ 2μ°¨μ λ°°μ΄λ‘ λ°ννλ ν¨μ μ μΈ
β’ μΈμ€ν΄μ€ μμ±
β£ divide λ©μλμ κ²°κ³Όλ₯Ό λ³μμ μ μ₯
β€ divideArr μΆλ ₯