My implementation of javascript class library
There is nothing fundamentally wrong about your class strategy, it is a matter of personal style really. The only suggestion I would have is to add Object.prototype.hasOwnProperty guards in the for-in loops, to avoid extending your classes with bogus properties if someone adds things to Object.prototype.

for (var i in obj) {
     if(Object.prototype.hasOwnProperty.call(obj, i)){
         // ...
     }
}


As for the name === '' thing, its just a coincidence since Javascript functions (and therefore your class) always have this property defined:

(function(){}).name     // ""
(function foo(){}).name // "foo"


Some other properties such as "prototype" or "length" should also always be defined and there is nothing you can do about them.