JavaScript

[JavaScript] Function.prototype.call/apply/bind

JayLee 2021. 1. 20. 16:27
반응형

Pixabay로부터 입수된 Gerd Altmann님의 이미지 입니다.  

Function.prototype.call()

주어진 this와 파라매터 목록을 가지고 함수를 호출.

function Product(name, price) {
  this.name = name;
  this.price = price;
}

function Food(name, price) {
  Product.call(this, name, price);
  this.category = 'food';
}

console.log(new Food('cheese', 5).name);	// 'cheese'

 

Function.prototype.apply()

주어진 this와 파라매터 배열(혹은 유사 배열 객체도 가능)을 가지고 함수를 호출.

const numbers = [5, 6, 2, 3, 7];

const max = Math.max.apply(null, numbers);

console.log(max);	// 7

const min = Math.min.apply(null, numbers);

console.log(min);	// 2

 

Function.prototype.bind()

주어진 this로 this를 설정한 새로운 함수를 생성

const module = {
  x: 42,
  getX: function() {
    return this.x;
  }
};

const unboundGetX = module.getX;
console.log(unboundGetX()); // undefined

const boundGetX = unboundGetX.bind(module);
console.log(boundGetX());	// 42

 

참고: 

developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function

 

Function - JavaScript | MDN

Function 생성자는 새 Function 객체를 만듭니다. 이 생성자를 직접 호출하여 동적으로 함수를 생성할 수도 있으나, 보안 문제 및 eval과 유사한(그러나 훨씬 덜 심각한) 성능 문제가 발생할 수 있습니

developer.mozilla.org

 

반응형