The main difference is that p is an object, that is an instance of Person while p2 is a "plain" object, that is just an instance of Object.
When is this difference important?
1) accessing prototype properties:
var Person = function(name) { this.Name=name; } Person.prototype.getName = function () { return this.Name; }; p.getName() //works fine p2.getName() //Error since getName is not defined
Or:
console.log(p.constructor) //Person console.log(p2.constructor) //Object
2) using the instanceof operator:
p instanceof Person //true p2 instanceof Person //false
3) everything that has to do with inheritance
All three points can essentially be traced back to the prototype chain, that looks like this for both ways:
p --> Person --> Object p2 --> Object
Now, since you have this constructor function I would suggest you always use it, because it can get quite messy if you mix Person objects with plain objects. If you really just want an object, that has a Name property, you would be fine in both ways, but as soon as it gets a little bit more complex, you can run into severe problems.