part. 14 함수메소드

Angelo·2020년 5월 7일
0

Codestates PRE Javascript

목록 보기
14/15
post-thumbnail

Radiohead - Creep

함수를 실행하는 다양한 방법

  1. function (method) 호출
  2. new 키워드를 이용한 호출
  3. 함수 메소드 .call .apply를 이용
  • .bind 안내
    call / apply 와는 다르게, 함수를 바로 실행 시키지 않고, this값이 바인딩된 함수를 리턴한다.
function add (x,y) {
  this.val = x + y;
  console.log(this.val);
}

let obj = { val : 0 };
let boundFn = add.bind(obj,2,8); // boundFn은 함수
boundFn() // 10, add는 여기서 실행된다. 일반적인 function (method)호출처럼 보이지만, 여기엔 this 값이 이미 바인됭되어 있다. 
  • apply case
let arr = [7, 35, 2, 8, 21];
이 배열중 가장 작은 값을 Math.mi을 이용해 얻어내려면 ?

let minimum = Math.min.apply (null, arr); // this값이 의미가 없으므로 null로 넘겨도된다. Math는 constructor가 아니므로, 실행 context가 없다.
console.log(minumum);
  • call / apply case
call 또는 apply를 이용해 주체가 되는 인스턴스와 메소드의 순서를 바꿀 수 있다.
function moreThanFive(element) {
  return element.length > 5;
}

let arr = ['code', 'states'];
arr.filter(moreThanFive); // 인스턴스(arr)가 먼저 등장하고, 메소드(filter)가 뒤에 등장 
// ['states']

Array.prototype.filter.call(arr.moreThanFive); // 메소드가 먼저 등장, 인스턴스 나중 
// ['states']
profile
나만의 학습 노트

0개의 댓글