JavaScript doesn't have the concept of classes. It uses Prototype inheritance which means you can only create a new object by copying another object. When doing that you get the properties.
You can get around this by creating a "master" object without property values. Something like this:
master = {
foo: '',
bar: ''
};
Then you can create new 'instances' of the object with the new keyword:
$scope.master = new master();
$scope.master.foo = 'original foo';
$scope.master.bar = 'original bar';
When you need to create a new instance of the object, go back to the original, not your copy:
$scope.masterCopy = new master();
This is really a JavaScript issue and not an Angular specific issue. I suppose you could, theoretically, write a function to create a new instance of an object and then loop over the properties to set them all to null or empty strings.