If you have static analysis then it makes sense to use types instead of strings. If you don't have static analysis then there isn't much motivation which is why you see strings everywhere in unanalyzed JavaScript.
I usually do something like
var Constants = {
valueA: function valueA() {},
valueB: function valueB() {}
};
Why do you use empty functions instead of a number or a string?
My guess is than a function will always be a unique object, rather than if it was a number or string, there's a chance you use the same value twice.
an object literal would provide the same guarantee but without the overhead of function prototype methods, wonder if there's any other reason?
Maybe they're using functions so the values can have names? Perhaps easier to debug.