Q:

Why is "this" necessary when define arguments?

function Person(firstName, lastName, age)
{
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
}

var family = {};
family.mother = new Person("Susan", "Doyle", 32);
…

Do we have to use "this" here? and why? 
function …
{
     firstName = firstName;
     lastName = lastName;
     age = age;
  }

I wonder if this question is too simple …

A:

in javascript the this word is a reference to the object of invocation.
So if we have a global function
function () {console.log(this);} // Window

We get the global object or window.
if we have a deeper function in an object
var obj = {f: function (){console.log(this);}};
obj.f(); // Object {f: function} we get the object that wraps the function.

This rule is broken if we use the apply invocation pattern
obj.f.apply(window); // window is now bound to this.

In your example if you were to just call
Person(); // in global scope

you would effectively be assigning
window.firstName = // ...
window.lastName = // ...
window.age = //...

Because the this keyword is bound to the window object when called from global scope
You basically created a Constructor that should be called with the new operator. The new operator wraps your function with one that creates an object and calls your function using the apply method with the object as the this parameter.
var bob = Person("bob"); // bob is undefined but you changed the window object

var sue = new Person("sue"); // sue is an object like you expect.

Examine your code
var family = {}; // make an object
family.mother = new Person("Susan", "Doyle", 32);

because you used new before you function executes js makes a new object for you and uses the apply pattern to that object. This is what happens under the hood
family.mother = {};
Person.apply(family.mother, ["Susan", "Doyle", 32]);

