var kim = { name: "kim", first: 10, second: 20 };
var lee = { name: "lee", first: 10, second: 10 };
function sum(v) {
return v + (this.first + this.second);
}
// sum();
// sum.call();
// sum이라는 객체를 실행시킨다.
// 모든 함수는 call 이라는 함수를 가지고 있다.
// 인자로 kim을 넣으면 kim의 메서드가 된다.
// 두번째 인자로는 파라미터로 들어갈 값들이 들어간다.
console.log("sum.call(kim) : ", sum.call(kim, "-> "));
console.log("sum.call(lee) : ", sum.call(lee, " : "));
// 출력
// sum.call(kim) : -> 30
// sum.call(lee) : : 20
// ** apply도 유사한 기능을 갖고 있다.
// Bind()
// Bind : 호출될때마다 바꾸는 것이 아닌 고정시키는 것
// 내부적으로 this를 kim으로 하는 새로운 함수가 생긴다.
var kimSum = sum.bind(kim, "-> ");
console.log("kimSum() : ", kimSum());
// 출력
// kimSum() : -> 30