const author = { awesome: 'tushar', print: function() { console.log(this); }, }; const reader = { awesome: 'me' }; author.print.call(reader); // { awesome: 'me' } new author.print() // {} Since the print method is invoked with call , this refers to the object that has been passed, i.e, the reader object Since the print is invoked with new keyword, this is a new empty object Well summed btw!!