
함수를 호출하는 방법에는 함수로서 호출하는 방법과 메서드로서 호출하는 경우가있다. 둘다 모두 미리 정의한 동작을 수행하는 코드 뭉치로 함수는 그 자체로 독립적인 기능을 수행하지만 메서드는 자신을 호출한 대상 객체에 관한 동작을 수행한다.
일반적으로 함수를 호출했을 경우에는 this가 따로 지정되지 않기 때문에 this는 전역객체를 가리킨다.
메서드는 함수앞에 .이 있을경우 나 [] 가 있을경우 this에는 호출한 주체에 대한 정보가 담기게 되므로 앞의 객체가 this 가된다. (메서드 안의 내부함수도 동일)
var thisFunc = function(){
console.log(this)
}
thisfunc() // window
var thisMethod = {
a: thisfunc
}
thisMethod.a() // { a: ƒ thisfunc() }
func.call(thisArg[, arg1[, arg2[, ...]]])
호출주체의 함수를 즉시 실행하며, 이때 첫번재 인자를 this로 바인딩하고 , 이후의 인자들은 함수의 매개변수로 사용
func.apply(thisArg, [argsArray])
call과 같지만 두번째인자를 배열로 받아 함수의 매개변수로 사용
(유사배열객체, 생성자내부함수호출, argument객체 등에 사용해서 배열메서드를 사용할때 사용한다.)
func.bind(thisArg[, arg1[, arg2[, ...]]])
bind() 메소드가 호출되면 새로운 함수를 생성합니다. 받게되는 첫 인자의 value로는 this 키워드를 설정하고, 이어지는 인자들은 바인드된 함수의 인수에 제공됩니다.
바로 실행하는 것이 아니라 원하는 this가 바인딩된 함수를 생성한다.
arr.forEach(callback(currentvalue[, index[, array]])[, thisArg])