Javascript: call, apply, bind


🙋🏻‍♀️ call、applyとbindの違いは?


まず,共通点は,3人ともthisに渡したい変数を最初のパラメータとして得ることである.
callとapplyの違いは、callが2番目のパラメータからパラメータをリストし、applyが2番目のパラメータを配列形式で受信することである.
「call,apply」と「bind」の違いは、関数が呼び出されたときに呼び出され、applyが関数を実行し、bindが実行されないことです.bindは、バインドされた関数自体を返すと理解される.
// 유사배열 i.e. nodeList
const rainbow = { 0: 'red', 1: 'orange', 2: 'yellow', 3: 'green', 4: 'blue' }

// 배열에 강제 접목하여 배열처럼 다룬다
Array.prototype.slice.call(rainbow, 0, 1) // 'red' 
Array.prototype.slice.call(rainbow, [0, 1]) // 'red' 

// setTimeout 등에 유용한 bind
let current = { sec: 10 }

function tictoc(){ 
	this.sec++; 
	console.log(this.sec); 
}

// call, bind 의 문법차이 확인
setTimeout(() => { tictoc.call(current), 1000 }) 
setTimeout(tictoc.bind(current), 1000)