function f(c, d) {
console.log('this.a = ' + this.a);
console.log('this.b = ' + this.b);
console.log('c = ' + c);
console.log('d = ' + d);
return this.a + this.b + c + d;
}
var obj = {a: 1, b: 2};
console.log(f.call(obj, 3, 4));
console.log(f.apply(obj, [100, 200]));
/*
run:
"this.a = 1"
"this.b = 2"
"c = 3"
"d = 4"
10
"this.a = 1"
"this.b = 2"
"c = 100"
"d = 200"
303
*/