JavaScript this with simple objects


var person = {
  name: 'John Doe',
  age: 42,
  gender: 'male',
  bio: function() {
    console.log('My name is ' +;
};; // logs "My name is John Doe"
var bio =;
bio(); // logs "My name is undefined"

In the above code, makes use of the context (this). When the function is called as, the context gets passed automatically, and so it correctly logs "My name is John Doe". When assigning the function to a variable though, it loses its context.

In non-strict mode, the default context is the global object (window). In strict mode it is undefined.