Skip to content

Latest commit

Β 

History

History
276 lines (221 loc) Β· 4.01 KB

ch26-문제.md

File metadata and controls

276 lines (221 loc) Β· 4.01 KB

Chapter26

πŸ“Œλ¬Έμ œ1

λ‹€μŒ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ˜€μ„ λ•Œ, 좜λ ₯λ¬Όκ³Ό 좜λ ₯물이 λ‚˜μ˜¨ 이유λ₯Ό μž‘μ„±ν•˜μ‹œμ˜€.

const obj = {
  num: 26,
  a: function() {
    console.log(this.num);  // (1)
  },
  b: () => {
    console.log(this.num);  // (2)
  },
  c() {
    console.log(this.num);  // (3)
  }
}

obj.a();
obj.b();
obj.c();

λ‹΅μ•ˆμž‘μ„±

(1) : 
(2) : 
(3) : 

πŸ“Œλ¬Έμ œ2

각 μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³Όλ₯Ό μž‘μ„±ν•˜μ‹œμ˜€.

const func1 = x => (x ** 2);
console.log(func1(2));                // (1)

const func2 = (a, b, c, ...rest) => rest.reduce((pre, cur) => pre + cur, b);
console.log(func2(1, 2, 3, 4, 5));    // (2)

const func3 = (a, b) => {a, b};
console.log(func3('A', 'B'));         // (3)

const func4 = (x, y) => x + y;
console.log(func4(5, 5, 10));         // (4)

const func5 = (x, y, z) => z;
console.log(func5(5, 10));            // (5)

const func6 = (x, y) => {x + y;}
console.log(func6(10, 20));           // (6)

λ‹΅μ•ˆμž‘μ„±

(1) : 
(2) : 
(3) : 
(4) : 
(5) : 
(6) : 

πŸ“Œλ¬Έμ œ3

λ‹€μŒ μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³Όλ₯Ό μ μœΌμ„Έμš”.

const obj = {
  x: 1,
  func() {
    return this.x;
  },
};

console.log(obj.func); // (1)
new obj.func(); // (2)
obj.func.hasOwnProperty("prototype"); // (3)

λ‹΅μ•ˆ μž‘μ„±

(1) :
(2) :
(3) :

πŸ“Œλ¬Έμ œ4

ν™”μ‚΄ν‘œ ν•¨μˆ˜μ— λŒ€ν•œ μ„€λͺ…μž…λ‹ˆλ‹€. 각 μ„€λͺ…μ˜ true, falseλ₯Ό νŒλ‹¨ν•˜μ„Έμš”.

(1): prototype ν”„λ‘œνΌν‹°κ°€ μ—†κ³ , ν”„λ‘œν† νƒ€μž…λ„ μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.
(2): μ€‘λ³΅λœ λ§€κ°œλ³€μˆ˜ 이름을 선언해도 μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.
(3): μŠ€μ½”ν”„ 체인 μƒμ—μ„œ κ°€μž₯ κ°€κΉŒμš΄ μƒμœ„ ν•¨μˆ˜ μ€‘μ—μ„œ ν™”μ‚΄ν‘œ ν•¨μˆ˜κ°€ μ•„λ‹Œ ν•¨μˆ˜μ˜
    `this`, `arguments`, `super`, `new.target`을 μ°Έμ‘°ν•œλ‹€.

λ‹΅μ•ˆ μž‘μ„±

(1):
(2):
(3):

πŸ“Œλ¬Έμ œ5

λ‹€μŒμ˜ 좜λ ₯ κ²°κ³Όλ₯Ό μ“°μ„Έμš”.

var obj = {
    x : 10,
    f : function () {return this.x}
};

console.log(obj.f()); //(1)
var bar = obj.f;
console.log(bar()); // (2)

console.log(new obj.f()); // (3)

class Obj2 {
    constructor(){
    }
    f(){
        return this;
    }
}
const obj2 = new Obj2();
console.log(obj2.f()); //(4)
var bar2 = obj2.f;
console.log(bar2()); // (5)
console.log(new obj2.f()); // (6)

λ‹΅μ•ˆ μž‘μ„±

(1)
(2)
(3)
(4)
(5)
(6)


πŸ“Œλ¬Έμ œ6

λ‹€μŒμ˜ 좜λ ₯ κ²°κ³Όλ₯Ό μž‘μ„±ν•˜μ„Έμš”.

const base = {
    name : 'Lee',
    sayHi(){
        return `Hi ${this.name}`;
    }
};
const derived = {
    __proto__ : base,
    sayHi(){
        return `${super.sayHi()}!`;
    },
    sayHi2 : function(){
        return `${super.sayHi()}!`;
    }
}
console.log(derived.sayHi()); //(1)
console.log(derived.sayHi2()); //(2)

λ‹΅μ•ˆ μž‘μ„±

(1)
(2)

πŸ“Œλ¬Έμ œ7

λ‹€μŒ 좜λ ₯결과물을 μž‘μ„±ν•˜μ„Έμš”.

const obj = {
  f4: function (name) {
    this.name = name;
  },
  f5(name) {
    this.name = name;
  },
  f6: (name) => {
    this.name = name;
  },
};

console.log(obj.f4.hasOwnProperty("prototype")); // 1
console.log(obj.f5.hasOwnProperty("prototype")); // 2
console.log(obj.f6.hasOwnProperty("prototype")); // 3

const objCopy1 = new obj.f4("ha");
const objCopy2 = new obj.f5("haha");
const objCopy3 = new obj.f6("hahaha");

console.log(objCopy1.name); // 4
console.log(objCopy2.name); // 5
console.log(objCopy3.name); // 6

λ‹΅μ•ˆ μž‘μ„±

1 :
2 :
3 :
4 :
5 :
6 :

πŸ“Œλ¬Έμ œ8

λ‹€μŒ 좜λ ₯결과물을 μž‘μ„±ν•˜μ„Έμš”.

function f1(num, ...rest) {
  console.log(num, ...rest); // 1
  console.log(arguments[0]); // 2
}

const f2 = function (num, ...rest) {
  console.log(num, rest); // 3
  console.log(arguments[0]); // 4
};

const obj = {
  f3(num, ...rest) {
    console.log(num, rest); // 5
    console.log(arguments[0]); // 6
  },
};

const f4 = (num, ...rest) => {
  console.log(num, rest[0]); // 7
  console.log(arguments[0]); // 8
};

f1(1, 2, 3, 4);
f2(5, 6, 7, 8);
obj.f3(13, 14, 15, 16);
f4(9, 10, 11, 12);

λ‹΅μ•ˆ μž‘μ„±

1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :