This applies o1.show to o2 without modifying either object.

Results

var o1 = {name: 'o1', show: function() { log(this.name); }};
var o2 = {name: 'o2'};
o1.show();
o1.show.call(o2);
o1.show.apply(o2, []);