# Object Oriented JavaScript

> Source: https://learn-typescript.org/object-oriented-javascript/
> Part of Learn TypeScript, free to read.

JavaScript uses functions as classes to create objects using the `new` keyword. Here is an example:

```typescript
function Person(firstName, lastName) {
    // construct the object using the arguments
    this.firstName = firstName;
    this.lastName = lastName;

    // a method which returns the full name
    this.fullName = function() {
        return this.firstName + " " + this.lastName;
    }
}

let myPerson = new Person("John", "Smith");
console.log(myPerson.fullName());            // outputs "John Smith"
```

Creating an object using the `new` keyword is the same as writing the following code:

```typescript
let myPerson = {
    firstName : "John",
    lastName : "Smith",
    fullName : function()
    {
        return this.firstName + " " + this.lastName;
    }
}
```

The difference between the two methods of creating objects is that the first method uses a class to define the object and then the `new` keyword to instantiate it, and the second method immediately creates an instance of the object.
