I was tested on my knowledge on creating functions which would be called as a constructors in JavaScript. 

```
function Clonetrooper(name, rank, age) {
  this.name = name;
  this.rank = rank;
  this.age = age;

```

I have gotten into a practice of using this line of code 

```
  if (!(this instanceof Clonetrooper)) return new Clonetrooper();
}

```

to prevent the function from being called without the new keyword.

The teacher/grader noted the following comment.

> 
> This isn't necessary and actually isn't doing what you would want
>  it to do.
>  This will set properties on 'this' and then return a completely separate instance
>  of Clonetrooper without those properties set.
> 
> 
> 

To be fair I did forgot to add the props like so...

```
if (!(this instanceof Clonetrooper)) return new Clonetrooper(name, rank, age);

```

But actually turns out that doesn't matter...

Doing it like this, (like in the original code)

```
  if (!(this instanceof Clonetrooper)) return new Clonetrooper();

```

will return an object with those properties—only they hold the value `undefined`

```
new Clonetrooper
Clonetrooper {name: undefined, rank: undefined, age: undefined}

```

So can someone explain what they meant?