# ‘return’ inside constructors

```js
function Eg() {
  this.name = 10;
  return 'adarsh';
}
new Eg(); // Returns {name: 10}
```

However, if you return a object inside a constructor function, that object will be returned.

```js
function Eg() {
  this.name = 10;
  return { 
    name: 'adarsh' 
  };
}
new Eg(); // Returns {name: "adarsh"}
```

So basically, whenever you return a primitive inside a constructor function, that is ignored. However any reference types returned inside a constructor function will override the 'new'ly created object.
A sample 'new' implementation

```js
NEW = function(constructor, args){
    // var obj = Object.create(constructor.prototype);
    var obj = {};
    obj.__proto__ = constructor.prototype;
    var retValue = constructor.apply(obj, args);
    if(typeof retValue === 'object') {
        return retValue;
    }
    else {
        return obj;
    }
};
```
Usage: ```NEW(Person, ['Adarsh']);```
Note: Line 1 (commented) inside the above function 
      can replace lines 2 and 3
For more details, follow the below link:
http://www.bennadel.com/blog/2522-providing-a-return-value-in-a-javascript-constructor.htm

